From e8f2641919de90b488ce3788a7795b88311750b5 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 7 Dec 2006 00:25:49 +0100 Subject: Imported from util-linux-2.11m tarball. --- HISTORY | 92 + INSTALL | 12 +- MCONFIG | 12 +- Makefile | 1 - VERSION | 2 +- configure | 14 + disk-utils/blockdev.c | 28 +- disk-utils/fdformat.c | 18 +- disk-utils/fsck.minix.c | 21 +- disk-utils/minix.h | 3 + disk-utils/mkfs.minix.c | 34 +- disk-utils/setfdprm.c | 11 +- fdisk/Makefile | 2 +- fdisk/cfdisk.c | 53 +- fdisk/fdisk.c | 164 +- fdisk/fdisk.h | 2 +- fdisk/fdiskbsdlabel.c | 12 +- fdisk/fdisksgilabel.c | 5 +- fdisk/fdisksunlabel.c | 4 +- fdisk/i386_sys_types.c | 4 +- fdisk/partitiontype.c | 129 + fdisk/sfdisk.c | 52 +- games/Makefile | 34 - games/banner.6 | 72 - games/banner.c | 1157 ----- hwclock/hwclock.c | 133 +- lib/xstrncpy.c | 1 + login-utils/Makefile | 2 +- login-utils/agetty.c | 16 +- login-utils/login.c | 65 +- login-utils/passwd.c | 10 +- login-utils/shutdown.c | 9 +- login-utils/simpleinit.c | 8 +- login-utils/vipw.c | 169 +- login-utils/wall.c | 7 + misc-utils/Makefile | 7 +- misc-utils/cal.c | 100 +- misc-utils/logger.1 | 9 +- misc-utils/namei.c | 15 +- misc-utils/replay.1 | 179 + misc-utils/replay.pl | 79 + misc-utils/script.1 | 7 + misc-utils/script.c | 17 +- misc-utils/setterm.c | 4 +- mount/fstab.5 | 7 +- mount/linux_fs.h | 52 + mount/mount.8 | 176 +- mount/mount_by_label.c | 4 +- mount/mount_guess_fstype.c | 83 +- mount/mount_guess_rootdev.c | 18 +- mount/nfs.5 | 2 +- mount/nfsmount.c | 27 +- mount/nfsmount.x | 1 - mount/rpcsvc/nfsmount.h | 1 - mount/rpcsvc/nfsmount.x | 1 - mount/sundries.c | 2 +- mount/swapon.c | 2 + mount/umount.8 | 18 +- mount/umount.c | 53 +- po/Makefile | 4 +- po/POTFILES.in | 1 - po/cat-id-tbl.c | 3657 +++++++-------- po/cs.po | 2753 +++++------ po/da.po | 4045 ++++++++-------- po/de.po | 9217 +++++++++++++++++++------------------ po/es.po | 10392 +++++++++++++++++++++-------------------- po/fr.po | 8903 +++++++++++++++++++----------------- po/it.po | 10396 ++++++++++++++++++++++-------------------- po/ja.po | 7863 +++++++++++++++++--------------- po/nl.po | 8244 +++++++++++++++++---------------- po/pt_BR.po | 4383 ++++++++++-------- po/sv.po | 9696 +++++++++++++++++++++++++++++++++++++++ po/tr.po | 9327 +++++++++++++++++++++++++++++++++++++ sys-utils/cytune.c | 28 +- sys-utils/ipcrm.8 | 4 +- sys-utils/ipcs.c | 4 +- sys-utils/rdev.c | 1 + sys-utils/readprofile.c | 32 +- sys-utils/renice.c | 24 +- testincl | 5 +- text-utils/Makefile | 10 +- text-utils/line.1 | 17 + text-utils/line.sh | 22 + text-utils/more.1 | 6 +- text-utils/more.c | 16 +- 85 files changed, 57459 insertions(+), 34813 deletions(-) create mode 100644 fdisk/partitiontype.c delete mode 100644 games/Makefile delete mode 100644 games/banner.6 delete mode 100644 games/banner.c create mode 100644 misc-utils/replay.1 create mode 100755 misc-utils/replay.pl create mode 100644 po/sv.po create mode 100644 po/tr.po create mode 100644 text-utils/line.1 create mode 100644 text-utils/line.sh diff --git a/HISTORY b/HISTORY index aa7b46c5e..a94364505 100644 --- a/HISTORY +++ b/HISTORY @@ -1,3 +1,95 @@ +util-linux 2.11m + +* Danish messages (Claus Hindsgaul) +* German messages (Karl Eichwalder) +* Swedish messages (Christian Rose) +* Turkish messages (Nilgün Belma Bugüner) +* fdisk: added netbsd type (Steven J. Hill) +* more: fix for unsigned char (Rusty Russell) +* mount: added sysv magic (Tim Launchbury) +* setterm: fixed "setterm -foreground default" + +util-linux 2.11l + +* Danish messages (Claus Hindsgaul) +* banner: removed - it is in bsdgames +* fdisk: show partitions with empty type but some other nonzero field +* login: copy the static struct that getpwnam() returns before calling + PAM routines that might themselves use getpwnam(). Abort on problems. + (Olaf Kirch) +* mount: added jfs magic (Christoph Hellwig) +* renice: report the correct new priority after a setpriority() +* umount: add lazy unmount (Christoph Hellwig) + +util-linux 2.11k + + Various potential buffer overflows were pointed out by awayzzz@digibel.org. + Fixes in agetty, hwclock, namei, readprofile, simpleinit, vipw. + (Also added a few [f]close() calls - entirely superfluously.) + +* agetty: avoid possible buffer overflow +* cfdisk: recognize xfs (Nathan Scott) +* cytune: added close() +* fdformat: added close() +* fdisk: added fclose() +* hwclock: avoid possible buffer overflow +* mkfs.minix: added fclose() +* mount: remove the assumption that 635 is the default mount port +* namei: avoid possible buffer overflow +* rdev: added closedir() +* readprofile: avoid possible buffer overflow +* sfdisk: added fclose() +* simpleinit: avoid possible buffer overflow +* swapon: added fclose() +* umount: use tcp when mount was done using tcp (James D Strandboge) +* vipw: avoid possible buffer overflow + +util-linux 2.11j + +* No new French messages yet +* fdisk: fix for AIX label (Olaf Hering) +* fdisk: fix for creating DOS label when BSD label is present +* mount.8: added remark about blocksize to ext2 sb= mount option description. +* partitiontype: new, not installed + +util-linux 2.11i + +* testincl: do not run conftest (Brian Murphy) +* blockdev: corrected ioctl numbers now that BLKBSZGET is in 2.4.10pre3 +* cal: fixed for Hungarian locale +* cal: fixed for multibyte locales (Pablo Saratxaga) +* fdisk: avoid superfluous warning about DOS partitions +* line: new, to support SCO shell scripts (Christoph Hellwig) +* mount: added vxfs magic +* passwd: tiny fix for ARM (Ken Cox) +* replay: replay typescript with timings (Joey Hess) +* script: add -t flag for timing (Joey Hess) + +util-linux 2.11h + +* Turkish messages (Nilgün Belma Bugüner) +* Danish messages (Claus Hindsgaul) +* banner: minor fix (awayzzz@digibel.org) +* mkfs.minix: minix v2 fix +* more.1: improved (Edward Betts) +* mount.8: corrected description of the nwfs uni_xlate mount option +* vipw: make temp files of mode 0600 (Bill Nottingham) +* wall: avoid writing to /dev/:0 + +util-linux 2.11g + +* MCONFIG & configure: fix for gcc 3.0 + Note that nfsmount_xdr.c may give warnings with gcc 3.0, essentially + because of defines in that use things like ntohl(*buf++) + where ntohl(x) is a macro with several occurrences of x. +* blockdev: support for the get/set blocksize ioctls + [not yet in the 2.4.5 kernel] +* fdisk: added Linux/PA-RISC type (Matt Taggart) +* mount: minor fix (Andrey J. Melnikoff) +* mount: added some ext3 stuff (Andrew Morton) +* mount: added heuristics for reiserfs (Andrew Morton) +* mount.8: added ext3 and reiserfs docs (Andrew Morton) + util-linux 2.11f * Czech messages (Jiøí Pavlovskı) diff --git a/INSTALL b/INSTALL index 4b47ba0d0..16dcb122a 100644 --- a/INSTALL +++ b/INSTALL @@ -21,8 +21,8 @@ WARNING: The simpleinit and some other programs in this package are To install from source: 1) Get source distribution (see the .lsm file for locations) -2) Untar util-linux-2.10X.tar.gz somewhere -3) cd util-linux-2.10X +2) Untar util-linux-2.11X.tar.gz somewhere +3) cd util-linux-2.11X 4) Edit MCONFIG 5) ./configure 6) Look at defines.h and make_include, and edit if necessary @@ -34,6 +34,14 @@ To install from source: compatible init!), or you will be hosed. If you are using the SysV init and/or some other getty, they you can keep using those. +People ask: I want to link statically and install in /foo. How? +Answer: Try the following: + LDFLAGS="-static" + DESTDIR=/foo + export LDFLAGS DESTDIR + ./configure + make + make install If you have compilation problems: tell util-linux@math.uio.no about it. diff --git a/MCONFIG b/MCONFIG index 51f3b9871..36afcccc4 100644 --- a/MCONFIG +++ b/MCONFIG @@ -92,12 +92,20 @@ HAVE_FDUTILS=no # ADD_RAW=yes # Different optimizations for different cpus. +# gcc 3.0 likes options -mcpu=i486 instead of -m486 ifeq "$(ARCH)" "intel" + ifeq "$(HAVE_OLD_GCC)" "yes" + CPUHEAD=-m + else + CPUHEAD=-mcpu=i + endif ifeq "$(CPU)" "i386" - OPT= -pipe -O2 -m386 -fomit-frame-pointer + CPUTAIL=386 else - OPT= -pipe -O2 -m486 -fomit-frame-pointer + CPUTAIL=486 endif + CPUOPT= $(CPUHEAD)$(CPUTAIL) + OPT= -pipe -O2 $(CPUOPT) -fomit-frame-pointer else ifeq "$(ARCH)" "arm" OPT= -pipe -O2 -fsigned-char -fomit-frame-pointer diff --git a/Makefile b/Makefile index 4423f4995..fd4306189 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,6 @@ SUBDIRS=po \ lib \ getopt-1.1.2 \ disk-utils \ - games \ login-utils \ misc-utils \ mount \ diff --git a/VERSION b/VERSION index 009a3e75c..136c4ddcf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.11f +2.11m diff --git a/configure b/configure index 8de131a80..2a03d0aba 100755 --- a/configure +++ b/configure @@ -3,6 +3,8 @@ # # We need to find out the following things: # +# Version of gcc +# # Existence of header files: # H1. For fdisksunlabel.c: is there a ? # H2. For fdisk.c: is there a ? @@ -61,6 +63,18 @@ export COMPILE rm -f conftest.c conftest +# +# Old gcc wants options like -m486, but gcc 3.0 says +# `-m486' is deprecated. Use `-march=i486' or `-mcpu=i486' instead. +# +echo " +main(){ exit(0); } +" > conftest.c +gccout=`$CC $CFLAGS -m386 conftest.c -o conftest 2>&1 | grep "march="` +if test -z "$gccout"; then + echo "HAVE_OLD_GCC=yes" >> make_include +fi +rm -f conftest conftest.c # # Find out about the existence of header files diff --git a/disk-utils/blockdev.c b/disk-utils/blockdev.c index af727f7da..0407e4f9d 100644 --- a/disk-utils/blockdev.c +++ b/disk-utils/blockdev.c @@ -25,6 +25,8 @@ #define BLKRASET _IO(0x12,98) #define BLKRAGET _IO(0x12,99) #define BLKSSZGET _IO(0x12,104) +#define BLKBSZGET _IOR(0x12,112,sizeof(int)) +#define BLKBSZSET _IOW(0x12,113,sizeof(int)) #endif const char *progname; @@ -36,9 +38,10 @@ struct bdc { int argtype; #define ARGNONE 0 #define ARGINTA 1 -#define ARGINTP 2 -#define ARGINTG 3 -#define ARGLINTG 4 +#define ARGINTAP 2 +#define ARGINTP 3 +#define ARGINTG 4 +#define ARGLINTG 5 long argval; char *argname; char *help; @@ -53,6 +56,12 @@ struct bdc { #ifdef BLKSSZGET { "--getss", "BLKSSZGET", BLKSSZGET, ARGINTG, -1, NULL, N_("get sectorsize") }, #endif +#ifdef BLKBSZGET + { "--getbsz", "BLKBSZGET", BLKBSZGET, ARGINTG, -1, NULL, N_("get blocksize") }, +#endif +#ifdef BLKBSZSET + { "--setbsz", "BLKBSZSET", BLKBSZSET, ARGINTAP, 0, "BLOCKSIZE", N_("set blocksize") }, +#endif #ifdef BLKGETSIZE { "--getsize", "BLKGETSIZE", BLKGETSIZE, ARGLINTG, -1, NULL, N_("get size") }, #endif @@ -132,7 +141,8 @@ main(int argc, char **argv) { for (d = 1; d < argc; d++) { j = find_cmd(argv[d]); if (j >= 0) { - if (bdcms[j].argtype == ARGINTA) + if (bdcms[j].argtype == ARGINTA || + bdcms[j].argtype == ARGINTAP) d++; continue; } @@ -154,6 +164,7 @@ main(int argc, char **argv) { exit(1); } do_commands(fd, argv, d); + close(fd); } return 0; } @@ -195,6 +206,15 @@ do_commands(int fd, char **argv, int d) { iarg = atoi(argv[++i]); res = ioctl(fd, bdcms[j].ioc, iarg); break; + case ARGINTAP: + if (i == d-1) { + fprintf(stderr, _("%s requires an argument\n"), + bdcms[j].name); + usage(); + } + iarg = atoi(argv[++i]); + res = ioctl(fd, bdcms[j].ioc, &iarg); + break; case ARGINTP: case ARGINTG: iarg = bdcms[j].argval; diff --git a/disk-utils/fdformat.c b/disk-utils/fdformat.c index cfbb455ce..e479059c3 100644 --- a/disk-utils/fdformat.c +++ b/disk-utils/fdformat.c @@ -21,14 +21,13 @@ /* cannot include */ #define MAJOR(a) ((a)>>8) -static int ctrl; struct floppy_struct param; #define FLOPPY_MAJOR 2 #define SECTOR_SIZE 512 #define PERROR(msg) { perror(msg); exit(1); } -static void format_disk(char *name) +static void format_disk(int ctrl, char *name) { struct format_descr descr; int track; @@ -103,6 +102,7 @@ static void usage(char *name) int main(int argc,char **argv) { + int ctrl; int verify; struct stat st; char *progname, *p; @@ -135,13 +135,19 @@ int main(int argc,char **argv) exit(1); } if (access(argv[1],W_OK) < 0) PERROR(argv[1]); - if ((ctrl = open(argv[1],O_WRONLY)) < 0) PERROR(argv[1]); + + ctrl = open(argv[1],O_WRONLY); + if (ctrl < 0) + PERROR(argv[1]); if (ioctl(ctrl,FDGETPRM,(long) ¶m) < 0) - PERROR(_("Could not determine current format type")); + PERROR(_("Could not determine current format type")); printf(_("%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n"), (param.head == 2) ? _("Double") : _("Single"), param.track, param.sect,param.size >> 1); - format_disk(argv[1]); - if (verify) verify_disk(argv[1]); + format_disk(ctrl, argv[1]); + close(ctrl); + + if (verify) + verify_disk(argv[1]); return 0; } diff --git a/disk-utils/fsck.minix.c b/disk-utils/fsck.minix.c index 7f5de7358..2a706c56d 100644 --- a/disk-utils/fsck.minix.c +++ b/disk-utils/fsck.minix.c @@ -1015,7 +1015,7 @@ check_file2 (struct minix2_inode *dir, unsigned int offset) { if (ino > INODES) { printf(_("The directory '")); print_current_name (); - printf (_("' contains a bad inode number for file '%.*s'.", + printf (_("' contains a bad inode number for file '%.*s'."), namelen, name); if (ask (_(" Remove"), 1)) { *(unsigned short *) (name - 2) = 0; @@ -1155,8 +1155,12 @@ check_counts(void) { unmark_zone(i); continue; } - printf(_("Zone %d: %sin use, counted=%d\n"), - i,zone_in_use(i)?"":_("not "),zone_count[i]); + if (zone_in_use(i)) + printf(_("Zone %d: in use, counted=%d\n"), + i, zone_count[i]); + else + printf(_("Zone %d: not in use, counted=%d\n"), + i, zone_count[i]); } } @@ -1201,13 +1205,18 @@ check_counts2 (void) { if (!zone_count[i]) { if (bad_zone (i)) continue; - printf (_("Zone %d: marked in use, no file uses it."), i); + printf (_("Zone %d: marked in use, no file uses it."), + i); if (ask (_("Unmark"), 1)) unmark_zone (i); continue; } - printf (_("Zone %d: %sin use, counted=%d\n"), - i, zone_in_use (i) ? "" : _("not "), zone_count[i]); + if (zone_in_use (i)) + printf (_("Zone %d: in use, counted=%d\n"), + i, zone_count[i]); + else + printf (_("Zone %d: not in use, counted=%d\n"), + i, zone_count[i]); } } #endif diff --git a/disk-utils/minix.h b/disk-utils/minix.h index 46f2af3c5..638565ef0 100644 --- a/disk-utils/minix.h +++ b/disk-utils/minix.h @@ -50,11 +50,14 @@ struct minix_super_block { #define NAME_MAX 255 /* # chars in a file name */ #define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix_inode))) +#define MINIX2_INODES_PER_BLOCK ((BLOCK_SIZE)/(sizeof (struct minix2_inode))) #define MINIX_VALID_FS 0x0001 /* Clean fs. */ #define MINIX_ERROR_FS 0x0002 /* fs has errors. */ #define MINIX_SUPER_MAGIC 0x137F /* original minix fs */ #define MINIX_SUPER_MAGIC2 0x138F /* minix fs, 30 char names */ +#define MINIX2_SUPER_MAGIC 0x2468 /* minix V2 fs */ +#define MINIX2_SUPER_MAGIC2 0x2478 /* minix V2 fs, 30 char names */ #endif /* KERNEL_INCLUDES_ARE_CLEAN */ diff --git a/disk-utils/mkfs.minix.c b/disk-utils/mkfs.minix.c index 4c2afbb28..55d97e01e 100644 --- a/disk-utils/mkfs.minix.c +++ b/disk-utils/mkfs.minix.c @@ -160,11 +160,13 @@ static unsigned long req_nr_inodes = 0; #define mark_zone(x) (setbit(zone_map,(x)-FIRSTZONE+1)) #define unmark_zone(x) (clrbit(zone_map,(x)-FIRSTZONE+1)) +#ifndef HAVE_MINIX2 static void fatal_error(const char * fmt_string,int status) { fprintf(stderr,fmt_string,program_name,device_name); exit(status); } +#endif static void die(char *str) { @@ -600,22 +602,24 @@ check_blocks(void) { static void get_list_blocks(char *filename) { - FILE *listfile; - unsigned long blockno; + FILE *listfile; + unsigned long blockno; - listfile=fopen(filename,"r"); - if(listfile == (FILE *)NULL) { - die(_("can't open file of bad blocks")); - } - while(!feof(listfile)) { - fscanf(listfile,"%ld\n", &blockno); - mark_zone(blockno); - badblocks++; - } - if(badblocks > 1) - printf(_("%d bad blocks\n"), badblocks); - else if (badblocks == 1) - printf(_("one bad block\n")); + listfile = fopen(filename,"r"); + if (listfile == NULL) + die(_("can't open file of bad blocks")); + + while (!feof(listfile)) { + fscanf(listfile,"%ld\n", &blockno); + mark_zone(blockno); + badblocks++; + } + fclose(listfile); + + if(badblocks > 1) + printf(_("%d bad blocks\n"), badblocks); + else if (badblocks == 1) + printf(_("one bad block\n")); } int diff --git a/disk-utils/setfdprm.c b/disk-utils/setfdprm.c index aee8a4d16..a5dba3e00 100644 --- a/disk-utils/setfdprm.c +++ b/disk-utils/setfdprm.c @@ -97,13 +97,14 @@ usage(char *name) { char *this; if ((this = strrchr(name,'/')) != NULL) name = this+1; - fprintf(stderr,_("usage: %s [ -p ] dev name\n"),name); - fprintf(stderr,_(" %s [ -p ] dev size sect heads tracks stretch \ -gap rate spec1 fmt_gap\n"),name); + fprintf(stderr,_("usage:\n")); + fprintf(stderr,_(" %s [ -p ] dev name\n"),name); + fprintf(stderr,_(" %s [ -p ] dev size sect heads tracks stretch " + "gap rate spec1 fmt_gap\n"),name); #ifdef FDMEDCNG - fprintf(stderr,_(" %s [ -c | -y | -n | -d ] dev\n"),name); + fprintf(stderr,_(" %s [ -c | -y | -n | -d ] dev\n"),name); #else - fprintf(stderr,_(" %s [ -c | -y | -n ] dev\n"),name); + fprintf(stderr,_(" %s [ -c | -y | -n ] dev\n"),name); #endif exit(1); } diff --git a/fdisk/Makefile b/fdisk/Makefile index ad774c888..a2a75dad2 100644 --- a/fdisk/Makefile +++ b/fdisk/Makefile @@ -77,4 +77,4 @@ install: all .PHONY: clean clean: - -rm -f *.o *~ core $(SBIN) + -rm -f *.o *~ core $(SBIN) partitiontype diff --git a/fdisk/cfdisk.c b/fdisk/cfdisk.c index d9ef3f630..f39fec619 100644 --- a/fdisk/cfdisk.c +++ b/fdisk/cfdisk.c @@ -47,6 +47,8 @@ * Some more i18n. * Sun Jul 18 03:19:42 MEST 1999 * Terabyte-sized disks. + * Sat Jun 30 05:23:19 EST 2001 + * XFS label recognition. * ****************************************************************************/ @@ -397,6 +399,8 @@ partition_type_text(int i) { else if (p_info[i].id == LINUX) { if (!strcmp(p_info[i].fstype, "ext2")) return _("Linux ext2"); + else if (!strcmp(p_info[i].fstype, "xfs")) + return _("Linux XFS"); else return _("Linux"); } else if (p_info[i].id == OS2_OR_NTFS) { @@ -612,7 +616,8 @@ get_dos_label(int i) { } static void -get_ext2_label(int i) { +get_linux_label(int i) { + #define EXT2_SUPER_MAGIC 0xEF53 #define EXT2LABELSZ 16 struct ext2_super_block { @@ -622,22 +627,49 @@ get_ext2_label(int i) { char s_volume_name[EXT2LABELSZ]; char s_last_mounted[64]; char s_dummy2[824]; - } sb; - char *label = sb.s_volume_name; + } e2fsb; + +#define XFS_SUPER_MAGIC "XFSB" +#define XFSLABELSZ 12 + struct xfs_super_block { + unsigned char s_magic[4]; + unsigned char s_dummy0[104]; + unsigned char s_fname[XFSLABELSZ]; + unsigned char s_dummy1[904]; + } xfsb; + + char *label; ext2_loff_t offset; int j; offset = ((ext2_loff_t) p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE + 1024; if (ext2_llseek(fd, offset, SEEK_SET) == offset - && read(fd, &sb, sizeof(sb)) == sizeof(sb) - && sb.s_magic[0] + 256*sb.s_magic[1] == EXT2_SUPER_MAGIC) { + && read(fd, &e2fsb, sizeof(e2fsb)) == sizeof(e2fsb) + && e2fsb.s_magic[0] + 256*e2fsb.s_magic[1] == EXT2_SUPER_MAGIC) { + label = e2fsb.s_volume_name; for(j=0; j= sizeof(buff)) { /* truncate ridiculously long string */ - xstrncpy( buff, mi, sizeof(buff)); + xstrncpy(buff, mi, sizeof(buff)); } else { snprintf(buff, sizeof(buff), (menuType & MENU_BUTTON) ? "[%*s%-*s]" : "%*s%-*s", @@ -1447,6 +1479,12 @@ get_partition_table_geometry(partition_table *bufp) { die_x(3); zero_table = TRUE; return; + + /* Oskar Liljeblad suggested: + Bad signature blah blah + If this is a brand new harddrive that has not been partitioned + before, please run cfdisk -z. + */ } hh = ss = 0; @@ -2049,6 +2087,7 @@ print_part_table(void) { fp_printf(fp, _("Partition Table for %s\n"), disk_device); fp_printf(fp, "\n"); + /* Three-line heading. Read "Start Sector" etc vertically. */ fp_printf(fp, _(" ---Starting--- ----Ending---- Start Number of\n")); fp_printf(fp, _(" # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n")); fp_printf(fp, _("-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n")); diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 0c57ed22e..4e709b7bc 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -8,26 +8,13 @@ * (at your option) any later version. * * For detailed old history, see older versions. - * Contributions before 2000 by faith@cs.unc.edu, Michael Bischoff, + * Contributions before 2001 by faith@cs.unc.edu, Michael Bischoff, * LeBlanc@mcc.ac.uk, martin@cs.unc.edu, leisner@sdsp.mc.xerox.com, * esr@snark.thyrsus.com, aeb@cwi.nl, quinlan@yggdrasil.com, * fasten@cs.bonn.edu, orschaer@cip.informatik.uni-erlangen.de, * jj@sunsite.mff.cuni.cz, fasten@shw.com, ANeuper@GUUG.de, - * kgw@suse.de. - * - * Modified, Sun Feb 20 2000, kalium@gmx.de - * Added fix operation allowing to reorder primary/extended partition - * entries within the partition table. Some programs or OSes have - * problems using a partition table with entries not ordered - * according to their positions on disk. - * Munged this patch to also make it work for logical partitions. - * aeb, 2000-02-20. - * - * Wed Mar 1 14:34:53 EST 2000 David Huggins-Daines - * Better support for OSF/1 disklabels on Alpha. - * - * 2000-04-06, Michal Jaegermann (michal@ellpspace.math.ualberta.ca) - * fixed and added some alpha stuff. + * kgw@suse.de, kalium@gmx.de, dhuggins@linuxcare.com, + * michal@ellpspace.math.ualberta.ca and probably others. */ @@ -170,6 +157,7 @@ int fd, /* the disk */ listing = 0, /* no aborts for fdisk -l */ nowarn = 0, /* no warnings for fdisk -l/-s */ dos_compatible_flag = ~0, + dos_changed = 0, partitions = 4; /* maximum partition + 1 */ uint user_cylinders, user_heads, user_sectors; @@ -209,7 +197,7 @@ void fatal(enum failure why) { "Here DISK is something like /dev/hdb or /dev/sda\n" "and PARTITION is something like /dev/hda7\n" "-u: give Start and End in sector (instead of cylinder) units\n" -"-b 2048: (for certain MO drives) use 2048-byte sectors\n"); +"-b 2048: (for certain MO disks) use 2048-byte sectors\n"); break; case usage2: /* msg in cases where fdisk used to probe */ @@ -312,6 +300,21 @@ set_changed(int i) { ptes[i].changed = 1; } +/* + * Avoid warning about DOS partitions when no DOS partition was changed. + * Here a heuristic "is probably dos partition". + * We might also do the opposite and warn in all cases except + * for "is probably nondos partition". + */ +static int +is_dos_partition(int t) { + return (t == 1 || t == 4 || t == 6 || + t == 0x0b || t == 0x0c || t == 0x0e || + t == 0x11 || t == 0x12 || t == 0x14 || t == 0x16 || + t == 0x1b || t == 0x1c || t == 0x1e || t == 0x24 || + t == 0xc1 || t == 0xc4 || t == 0xc6); +} + static void menu(void) { if (sun_label) { @@ -405,7 +408,7 @@ xmenu(void) { puts(_(" c change number of cylinders")); puts(_(" d print the raw data in the partition table")); puts(_(" e list extended partitions")); /* !sun */ - puts(_(" g create an IRIX partition table")); /* sgi */ + puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ puts(_(" h change number of heads")); puts(_(" m print this menu")); puts(_(" p print the partition table")); @@ -421,7 +424,7 @@ xmenu(void) { puts(_(" c change number of cylinders")); puts(_(" d print the raw data in the partition table")); puts(_(" e list extended partitions")); /* !sun */ - puts(_(" g create an IRIX partition table")); /* sgi */ + puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ puts(_(" h change number of heads")); puts(_(" m print this menu")); puts(_(" p print the partition table")); @@ -438,7 +441,7 @@ xmenu(void) { puts(_(" d print the raw data in the partition table")); puts(_(" e list extended partitions")); /* !sun */ puts(_(" f fix partition order")); /* !sun, !aix, !sgi */ - puts(_(" g create an IRIX partition table")); /* sgi */ + puts(_(" g create an IRIX (SGI) partition table"));/* sgi */ puts(_(" h change number of heads")); puts(_(" m print this menu")); puts(_(" p print the partition table")); @@ -500,6 +503,13 @@ void list_types(struct systypes *sys) putchar('\n'); } +static int +is_cleared_partition(struct partition *p) { + return !(!p || p->boot_ind || p->head || p->sector || p->cyl || + p->sys_ind || p->end_head || p->end_sector || p->end_cyl || + get_start_sect(p) || get_nr_sects(p)); +} + static void clear_partition(struct partition *p) { if (!p) @@ -698,6 +708,8 @@ create_doslabel(void) { sun_nolabel(); /* otherwise always recognised as sun */ sgi_nolabel(); /* otherwise always recognised as sgi */ + aix_label = osf_label = 0; + partitions = 4; for (i = 510-64; i < 510; i++) MBRbuffer[i] = 0; @@ -705,7 +717,7 @@ create_doslabel(void) { extended_offset = 0; set_all_unchanged(); set_changed(0); - get_boot(create_empty); + get_boot(create_empty_dos); } #include @@ -804,6 +816,7 @@ get_geometry(int fd, struct geom *g) { * Read MBR. Returns: * -1: no 0xaa55 flag present (possibly entire disk BSD) * 0: found or created label + * 1: I/O error */ int get_boot(enum action what) { @@ -811,13 +824,17 @@ get_boot(enum action what) { partitions = 4; - if (what == create_empty) - goto got_table; /* skip reading disk */ + if (what == create_empty_dos) + goto got_dos_table; /* skip reading disk */ + if (what == create_empty_sun) + goto got_table; if ((fd = open(disk_device, type_open)) < 0) { - if ((fd = open(disk_device, O_RDONLY)) < 0) + if ((fd = open(disk_device, O_RDONLY)) < 0) { + if (what == try_only) + return 1; fatal(unable_to_open); - else + } else printf(_("You will not be able to write the partition table.\n")); } @@ -825,8 +842,11 @@ get_boot(enum action what) { update_units(); - if (sector_size != read(fd, MBRbuffer, sector_size)) + if (sector_size != read(fd, MBRbuffer, sector_size)) { + if (what == try_only) + return 1; fatal(unable_to_read); + } got_table: @@ -842,6 +862,8 @@ got_table: if (check_osf_label()) return 0; +got_dos_table: + if (!valid_part_table_flag(MBRbuffer)) { switch(what) { case fdisk: @@ -858,7 +880,8 @@ got_table: return -1; case try_only: return -1; - case create_empty: + case create_empty_dos: + case create_empty_sun: break; } @@ -876,7 +899,7 @@ got_table: pe->ext_pointer = NULL; pe->offset = 0; pe->sectorbuffer = MBRbuffer; - pe->changed = (what == create_empty); + pe->changed = (what == create_empty_dos); } for (i = 0; i < 4; i++) { @@ -1132,7 +1155,7 @@ delete_partition(int i) { */ if (warn_geometry()) - return; + return; /* C/H/S not set */ pe->changed = 1; if (sun_label) { @@ -1251,6 +1274,9 @@ change_sysid(void) { (temp = partition_type(sys)) ? temp : _("Unknown")); ptes[i].changed = 1; + if (is_dos_partition(origsys) || + is_dos_partition(sys)) + dos_changed = 1; break; } } @@ -1512,7 +1538,7 @@ list_table(int xtra) { struct pte *pe = &ptes[i]; p = pe->part_table; - if (p && p->sys_ind) { + if (p && !is_cleared_partition(p)) { unsigned int psects = get_nr_sects(p); unsigned int pblocks = psects; unsigned int podd = 0; @@ -1844,6 +1870,15 @@ new_partition(void) { return; } + if (aix_label) { + printf(_("\tSorry - this fdisk cannot handle AIX disk labels." + "\n\tIf you want to add DOS-type partitions, create" + "\n\ta new empty DOS partition table first. (Use o.)" + "\n\tWARNING: " + "This will destroy the present disk contents.\n")); + return; + } + if (partitions >= MAXIMUM_PARTS) { printf(_("The maximum number of partitions has been created\n")); return; @@ -1938,12 +1973,16 @@ reread_partition_table(int leave) { error = errno; } - if (i < 0) - printf(_("Re-read table failed with error %d: %s.\nReboot your " - "system to ensure the partition table is updated.\n"), + if (i) { + printf(_("\nWARNING: Re-reading the partition table " + "failed with error %d: %s.\n" + "The kernel still uses the old table.\n" + "The new table will be used " + "at the next reboot.\n"), error, strerror(error)); + } - if (!sun_label && !sgi_label) + if (dos_changed) printf( _("\nWARNING: If you have created or modified any DOS 6.x\n" "partitions, please see the fdisk manual page for additional\n" @@ -2110,43 +2149,53 @@ xselect(void) { } static int -is_ide_cdrom(char *device) { +is_ide_cdrom_or_tape(char *device) { + FILE *procf; + char buf[100]; + struct stat statbuf; + int is_ide = 0; + /* No device was given explicitly, and we are trying some - likely things. But opening /dev/hdc may produce errors like + likely things. But opening /dev/hdc may produce errors like "hdc: tray open or drive not ready" - if it happens to be a CD-ROM drive. It even happens that - the process hangs on the attempt to read a music CD. - So try to be careful. This only works since 2.1.73. */ - - FILE *procf; - char buf[100]; - struct stat statbuf; + if it happens to be a CD-ROM drive. It even happens that + the process hangs on the attempt to read a music CD. + So try to be careful. This only works since 2.1.73. */ - if (strncmp("/dev/hd", device, 7)) - return 0; - snprintf(buf, sizeof(buf), "/proc/ide/%s/media", device+5); - procf = fopen(buf, "r"); - if (procf != NULL && fgets(buf, sizeof(buf), procf)) - return !strncmp(buf, "cdrom", 5); + if (strncmp("/dev/hd", device, 7)) + return 0; - /* Now when this proc file does not exist, skip the - device when it is read-only. */ - if (stat(device, &statbuf) == 0) - return (statbuf.st_mode & 0222) == 0; + snprintf(buf, sizeof(buf), "/proc/ide/%s/media", device+5); + procf = fopen(buf, "r"); + if (procf != NULL && fgets(buf, sizeof(buf), procf)) + is_ide = (!strncmp(buf, "cdrom", 5) || + !strncmp(buf, "tape", 4)); + else + /* Now when this proc file does not exist, skip the + device when it is read-only. */ + if (stat(device, &statbuf) == 0) + is_ide = ((statbuf.st_mode & 0222) == 0); - return 0; + if (procf) + fclose(procf); + return is_ide; } static void try(char *device, int user_specified) { + int gb; + disk_device = device; if (setjmp(listingbuf)) return; if (!user_specified) - if (is_ide_cdrom(device)) + if (is_ide_cdrom_or_tape(device)) return; if ((fd = open(disk_device, type_open)) >= 0) { - if (get_boot(try_only) < 0) { + gb = get_boot(try_only); + if (gb > 0) { /* I/O error */ + close(fd); + } else if (gb < 0) { /* no DOS signature */ list_disk_geometry(); if (aix_label) return; @@ -2196,6 +2245,7 @@ tryprocpt(void) { snprintf(devname, sizeof(devname), "/dev/%s", ptname); try(devname, 0); } + fclose(procpt); } static void @@ -2312,8 +2362,6 @@ main(int argc, char **argv) { fatal(usage2); get_boot(fdisk); - if (aix_label) - exit(0); #ifdef __alpha__ /* On alpha, if we detect a disklabel, go directly to diff --git a/fdisk/fdisk.h b/fdisk/fdisk.h index 449f8dc3c..82bf46855 100644 --- a/fdisk/fdisk.h +++ b/fdisk/fdisk.h @@ -53,7 +53,7 @@ enum failure {usage, usage2, ioctl_error, unable_to_open, unable_to_read, unable_to_seek, unable_to_write, out_of_memory}; -enum action {fdisk, require, try_only, create_empty}; +enum action {fdisk, require, try_only, create_empty_dos, create_empty_sun}; struct geom { unsigned int heads; diff --git a/fdisk/fdiskbsdlabel.c b/fdisk/fdiskbsdlabel.c index 0522d3651..a47b7d5d6 100644 --- a/fdisk/fdiskbsdlabel.c +++ b/fdisk/fdiskbsdlabel.c @@ -59,7 +59,8 @@ #include "common.h" #include "fdisk.h" -#define NETBSD_PARTITION 0xa5 +#define FREEBSD_PARTITION 0xa5 +#define NETBSD_PARTITION 0xa9 #define DKTYPENAMES #include "fdiskbsdlabel.h" @@ -148,8 +149,11 @@ hidden(int type) { } static int -is_netbsd_partition_type(int type) { - return (type == NETBSD_PARTITION || type == hidden(NETBSD_PARTITION)); +is_bsd_partition_type(int type) { + return (type == FREEBSD_PARTITION || + type == hidden(FREEBSD_PARTITION) || + type == NETBSD_PARTITION || + type == hidden(NETBSD_PARTITION)); } #endif @@ -161,7 +165,7 @@ bselect (void) { for (t=0; t<4; t++) { p = get_part_table(t); - if (p && is_netbsd_partition_type(p->sys_ind)) { + if (p && is_bsd_partition_type(p->sys_ind)) { xbsd_part = p; xbsd_part_index = t; ss = get_start_sect(xbsd_part); diff --git a/fdisk/fdisksgilabel.c b/fdisk/fdisksgilabel.c index 88afcd86a..11ff31b91 100644 --- a/fdisk/fdisksgilabel.c +++ b/fdisk/fdisksgilabel.c @@ -135,8 +135,7 @@ sgi_get_pcylcount(void) { } void -sgi_nolabel() -{ +sgi_nolabel() { sgilabel->magic = 0; sgi_label = 0; partitions = 4; @@ -579,7 +578,7 @@ sgi_change_sysid( int i, int sys ) "retrieve from its directory standalone tools like sash and fx.\n" "Only the \"SGI volume\" entire disk section may violate this.\n" "Type YES if you are sure about tagging this partition differently.\n")); - if (strcmp (line_ptr, "YES\n")) + if (strcmp (line_ptr, _("YES\n"))) return; } sgilabel->partitions[i].id = SSWAP32(sys); diff --git a/fdisk/fdisksunlabel.c b/fdisk/fdisksunlabel.c index ff54ed5b5..b4968676f 100644 --- a/fdisk/fdisksunlabel.c +++ b/fdisk/fdisksunlabel.c @@ -383,7 +383,7 @@ void create_sunlabel(void) set_all_unchanged(); set_changed(0); - get_boot(create_empty); + get_boot(create_empty_sun); } void @@ -627,7 +627,7 @@ sun_change_sysid(int i, int sys) { "there may destroy your partition table and bootblock.\n" "Type YES if you're very sure you would like that partition\n" "tagged with 82 (Linux swap): ")); - if (strcmp (line_ptr, "YES\n")) + if (strcmp (line_ptr, _("YES\n"))) return; } switch (sys) { diff --git a/fdisk/i386_sys_types.c b/fdisk/i386_sys_types.c index 87639c6ba..b2b7e7534 100644 --- a/fdisk/i386_sys_types.c +++ b/fdisk/i386_sys_types.c @@ -64,9 +64,10 @@ struct systypes i386_sys_types[] = { {0x94, N_("Amoeba BBT")}, /* (bad block table) */ {0x9f, N_("BSD/OS")}, /* BSDI */ {0xa0, N_("IBM Thinkpad hibernation")}, - {0xa5, N_("BSD/386")}, + {0xa5, N_("FreeBSD")}, /* various BSD flavours */ {0xa6, N_("OpenBSD")}, {0xa7, N_("NeXTSTEP")}, + {0xa9, N_("NetBSD")}, {0xb7, N_("BSDI fs")}, {0xb8, N_("BSDI swap")}, {0xbb, N_("Boot Wizard hidden")}, @@ -87,6 +88,7 @@ struct systypes i386_sys_types[] = { {0xeb, N_("BeOS fs")}, {0xee, N_("EFI GPT")}, /* Intel EFI GUID Partition Table */ {0xef, N_("EFI (FAT-12/16/32)")},/* Intel EFI System Partition */ + {0xf0, N_("Linux/PA-RISC boot")},/* Linux/PA-RISC boot loader */ {0xf1, N_("SpeedStor")}, {0xf4, N_("SpeedStor")}, /* SpeedStor large partition */ {0xf2, N_("DOS secondary")}, /* DOS 3.3+ secondary */ diff --git a/fdisk/partitiontype.c b/fdisk/partitiontype.c new file mode 100644 index 000000000..5649c72ad --- /dev/null +++ b/fdisk/partitiontype.c @@ -0,0 +1,129 @@ +/* + * partitiontype.c, aeb, 2001-09-10 + * + * call: partitiontype device + * + * either exit(1), or exit(0) with a single line of output + * DOS: sector 0 has a DOS signature. + */ +#include +#include + +struct aix_label { + unsigned int magic; + /* more ... */ +}; + +#define AIX_LABEL_MAGIC 0xc9c2d4c1 +#define AIX_LABEL_MAGIC_SWAPPED 0xc1d4c2c9 + +struct bsd_label { + unsigned int magic; + unsigned char stuff[128]; + unsigned int magic2; + /* more ... */ +}; + +#define BSD_LABEL_MAGIC 0x82564557 + +struct sgi_label { + unsigned int magic; + /* more ... */ +}; + +#define SGI_LABEL_MAGIC 0x0be5a941 +#define SGI_LABEL_MAGIC_SWAPPED 0x41a9e50b + +struct sun_label { + unsigned char stuff[508]; + unsigned short magic; /* Magic number */ + unsigned short csum; /* Label xor'd checksum */ +}; + +#define SUN_LABEL_MAGIC 0xDABE +#define SUN_LABEL_MAGIC_SWAPPED 0xBEDA + +int +main(int argc, char **argv) { + int fd, n; + unsigned char buf[1024]; + struct aix_label *paix; + struct bsd_label *pbsd; + struct sgi_label *psgi; + struct sun_label *psun; + + if (argc != 2) { + fprintf(stderr, "call: %s device\n", argv[0]); + exit(1); + } + fd = open(argv[1], O_RDONLY); + if (fd == -1) { + perror(argv[1]); + fprintf(stderr, "%s: cannot open device %s\n", + argv[0], argv[1]); + exit(1); + } + n = read(fd, buf, sizeof(buf)); + if (n != sizeof(buf)) { + if (n == -1) + perror(argv[1]); + fprintf(stderr, "%s: cannot read device %s\n", + argv[0], argv[1]); + exit(1); + } + + psun = (struct sun_label *)(&buf); + if (psun->magic == SUN_LABEL_MAGIC || + psun->magic == SUN_LABEL_MAGIC_SWAPPED) { + unsigned short csum = 0, *p; + int i; + + for (p = (unsigned short *)(&buf); + p < (unsigned short *)(&buf[512]); p++) + csum ^= *p; + + if (csum == 0) { + printf("SUN\n"); + exit(0); + } + } + + pbsd = (struct bsd_label *)(&buf[512]); + if (pbsd->magic == BSD_LABEL_MAGIC && + pbsd->magic2 == BSD_LABEL_MAGIC) { + printf("BSD\n"); + exit(0); + } + + pbsd = (struct bsd_label *)(&buf[64]); + if (pbsd->magic == BSD_LABEL_MAGIC && + pbsd->magic2 == BSD_LABEL_MAGIC) { + printf("BSD\n"); + exit(0); + } + + paix = (struct aix_label *)(&buf); + if (paix->magic == AIX_LABEL_MAGIC || + paix->magic == AIX_LABEL_MAGIC_SWAPPED) { + printf("AIX\n"); + exit(0); + } + + psgi = (struct sgi_label *)(&buf); + if (psgi->magic == SGI_LABEL_MAGIC || + psgi->magic == SGI_LABEL_MAGIC_SWAPPED) { + printf("SGI\n"); + exit(0); + } + + if (buf[510] == 0x55 && buf[511] == 0xaa) { + printf("DOS\n"); + exit(0); + } +#if 0 + fprintf(stderr, "%s: do not recognize any label on %s\n", + argv[0], argv[1]); +#endif + exit(1); /* unknown */ +} + diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c index db1b7f4dd..404321930 100644 --- a/fdisk/sfdisk.c +++ b/fdisk/sfdisk.c @@ -568,6 +568,7 @@ chs_ok (chs a, char *v, char *w) { #define LINUX_NATIVE 0x83 #define LINUX_EXTENDED 0x85 #define BSD_PARTITION 0xa5 +#define NETBSD_PARTITION 0xa9 /* List of partition types now in i386_sys_types.c */ @@ -599,7 +600,7 @@ is_extended(unsigned char type) { static int is_bsd(unsigned char type) { - return (type == BSD_PARTITION); + return (type == BSD_PARTITION || type == NETBSD_PARTITION); } /* @@ -701,7 +702,7 @@ is_parent(struct part_desc *pp, struct part_desc *p) { } struct disk_desc { - struct part_desc partitions[128]; + struct part_desc partitions[512]; int partno; } oldp, newp; @@ -2318,27 +2319,35 @@ static struct devd { static int is_ide_cdrom_or_tape(char *device) { - /* No device was given explicitly, and we are trying some - likely things. But opening /dev/hdc may produce errors like - "hdc: tray open or drive not ready" - if it happens to be a CD-ROM drive. So try to be careful. - This only works since 2.1.73. */ + FILE *procf; + char buf[100]; + struct stat statbuf; + int is_ide = 0; - FILE *procf; - char buf[100]; - struct stat statbuf; + /* No device was given explicitly, and we are trying some + likely things. But opening /dev/hdc may produce errors like + "hdc: tray open or drive not ready" + if it happens to be a CD-ROM drive. It even happens that + the process hangs on the attempt to read a music CD. + So try to be careful. This only works since 2.1.73. */ - sprintf(buf, "/proc/ide/%s/media", device+5); - procf = fopen(buf, "r"); - if (procf != NULL && fgets(buf, sizeof(buf), procf)) - return !strncmp(buf, "cdrom", 5) || !strncmp(buf, "tape", 4); + if (strncmp("/dev/hd", device, 7)) + return 0; - /* Now when this proc file does not exist, skip the - device when it is read-only. */ - if (stat(device, &statbuf) == 0) - return (statbuf.st_mode & 0222) == 0; + snprintf(buf, sizeof(buf), "/proc/ide/%s/media", device+5); + procf = fopen(buf, "r"); + if (procf != NULL && fgets(buf, sizeof(buf), procf)) + is_ide = (!strncmp(buf, "cdrom", 5) || + !strncmp(buf, "tape", 4)); + else + /* Now when this proc file does not exist, skip the + device when it is read-only. */ + if (stat(device, &statbuf) == 0) + is_ide = ((statbuf.st_mode & 0222) == 0); - return 0; + if (procf) + fclose(procf); + return is_ide; } static void do_list(char *dev, int silent); @@ -2570,7 +2579,10 @@ my_open (char *dev, int rw, int silent) { fd = open(dev, mode); if (fd < 0 && !silent) { perror(dev); - fatal(_("cannot open %s %s\n"), dev, rw ? _("read-write") : _("for reading")); + if (rw) + fatal(_("cannot open %s read-write\n"), dev); + else + fatal(_("cannot open %s for reading\n"), dev); } return fd; } diff --git a/games/Makefile b/games/Makefile deleted file mode 100644 index 737e168e8..000000000 --- a/games/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# Makefile -- Makefile for util-linux Linux utilities -# Created: Sat Dec 26 20:09:40 1992 -# Revised: Fri Oct 6 20:27:05 1995 by r.faith@ieee.org -# Copyright 1992, 1993, 1994, 1995 Rickard E. Faith (faith@cs.unc.edu) -# May be distributed under the GPL -# -include ../make_include -include ../MCONFIG - -# Where to put man pages? - -MAN6= banner.6 - -# Where to put binaries? -# See the "install" rule for the links. . . - -USRGAMES= banner - -all: $(USRGAMES) - -# Rules for everything else - -banner.o: $(LIB)/errs.h -banner: banner.o $(ERR_O) -ddate: ddate.o - -install: all - $(INSTALLDIR) $(USRGAMESDIR) - $(INSTALLBIN) $(USRGAMES) $(USRGAMESDIR) - $(INSTALLDIR) $(MAN6DIR) - $(INSTALLMAN) $(MAN6) $(MAN6DIR) - -clean: - -rm -f *.o *~ core $(USRGAMES) diff --git a/games/banner.6 b/games/banner.6 deleted file mode 100644 index 3427a6693..000000000 --- a/games/banner.6 +++ /dev/null @@ -1,72 +0,0 @@ -.\" Copyright (c) 1980, 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. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 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. -.\" -.\" @(#)banner.6 8.1 (Berkeley) 6/6/93 -.\" -.TH BANNER 6 "June 6, 1993" -.UC -.SH NAME -banner \- print large banner on printer -.SH SYNOPSIS -.B /usr/games/banner -[ -.BI \-w n -] -message ... -.SH DESCRIPTION -.I Banner -prints a large, high quality banner on the standard output. -If the message is omitted, it prompts for and -reads one line of its standard input. If -.B \-w -is given, the output is scrunched down from a width of 132 to -.I n , -suitable for a narrow terminal. If -.I n -is omitted, it defaults to 80. -.PP -The output should be printed on a hard-copy device, up to 132 columns wide, -with no breaks between the pages. The volume is great enough that you -may want -a printer or a fast hardcopy terminal, but if you are patient, a -decwriter or other 300 baud terminal will do. -.SH BUGS -Several ASCII characters are not defined, notably <, >, [, ], \\, -^, _, {, }, |, and ~. Also, the characters ", ', and & are funny -looking (but in a useful way.) -.PP -The -.B \-w -option is implemented by skipping some rows and columns. -The smaller it gets, the grainier the output. -Sometimes it runs letters together. -.SH AUTHOR -Mark Horton diff --git a/games/banner.c b/games/banner.c deleted file mode 100644 index e8f7bf9ea..000000000 --- a/games/banner.c +++ /dev/null @@ -1,1157 +0,0 @@ -/* - * Copyright (c) 1980, 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. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 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. - * - * 1999-02-22 Arkadiusz Mi¶kiewicz - * - added Native Language Support - */ - -/* - * banner - prints large signs - * banner [-w#] [-d] [-t] message ... - */ - -#include "errs.h" -#include -#include -#include -#include -#include "nls.h" - -#define MAXMSG 1024 -#define DWIDTH 132 -#define NCHARS 128 -#define NBYTES 9271 - -/* Pointers into data_table for each ASCII char */ -int asc_ptr[NCHARS] = { -/* ^@ */ 0, 0, 0, 0, 0, 0, 0, 0, -/* ^H */ 0, 0, 0, 0, 0, 0, 0, 0, -/* ^P */ 0, 0, 0, 0, 0, 0, 0, 0, -/* ^X */ 0, 0, 0, 0, 0, 0, 0, 0, -/* */ 1, 3, 50, 81, 104, 281, 483, 590, -/* ( */ 621, 685, 749, 851, 862, 893, 898, 921, -/* 0 */1019, 1150, 1200, 1419, 1599, 1744, 1934, 2111, -/* 8 */2235, 2445, 2622, 2659, 0, 2708, 0, 2715, -/* @ */2857, 3072, 3273, 3403, 3560, 3662, 3730, 3785, -/* H */3965, 4000, 4015, 4115, 4281, 4314, 4432, 4548, -/* P */4709, 4790, 4999, 5188, 5397, 5448, 5576, 5710, -/* X */5892, 6106, 6257, 0, 0, 0, 0, 0, -/* ` */ 50, 6503, 6642, 6733, 6837, 6930, 7073, 7157, -/* h */7380, 7452, 7499, 7584, 7689, 7702, 7797, 7869, -/* p */7978, 8069, 8160, 8222, 8381, 8442, 8508, 8605, -/* x */8732, 8888, 9016, 0, 0, 0, 0, 0 -}; - -/* - * Table of stuff to print. Format: - * 128+n -> print current line n times. - * 64+n -> this is last byte of char. - * else, put m chars at position n (where m - * is the next elt in array) and goto second - * next element in array. - */ -char data_table[NBYTES] = { -/* 0 1 2 3 4 5 6 7 8 9 */ -/* 0 */ 129, 227, 130, 34, 6, 90, 19, 129, 32, 10, -/* 10 */ 74, 40, 129, 31, 12, 64, 53, 129, 30, 14, -/* 20 */ 54, 65, 129, 30, 14, 53, 67, 129, 30, 14, -/* 30 */ 54, 65, 129, 31, 12, 64, 53, 129, 32, 10, -/* 40 */ 74, 40, 129, 34, 6, 90, 19, 129, 194, 130, -/* 50 */ 99, 9, 129, 97, 14, 129, 96, 18, 129, 95, -/* 60 */ 22, 129, 95, 16, 117, 2, 129, 95, 14, 129, -/* 70 */ 96, 11, 129, 97, 9, 129, 99, 6, 129, 194, -/* 80 */ 129, 87, 4, 101, 4, 131, 82, 28, 131, 87, -/* 90 */ 4, 101, 4, 133, 82, 28, 131, 87, 4, 101, -/* 100 */ 4, 131, 193, 129, 39, 1, 84, 27, 129, 38, -/* 110 */ 3, 81, 32, 129, 37, 5, 79, 35, 129, 36, -/* 120 */ 5, 77, 38, 129, 35, 5, 76, 40, 129, 34, -/* 130 */ 5, 75, 21, 103, 14, 129, 33, 5, 74, 19, -/* 140 */ 107, 11, 129, 32, 5, 73, 17, 110, 9, 129, -/* 150 */ 32, 4, 73, 16, 112, 7, 129, 31, 4, 72, -/* 160 */ 15, 114, 6, 129, 31, 4, 72, 14, 115, 5, -/* 170 */ 129, 30, 4, 71, 15, 116, 5, 129, 27, 97, -/* 180 */ 131, 30, 4, 69, 14, 117, 4, 129, 30, 4, -/* 190 */ 68, 15, 117, 4, 132, 30, 4, 68, 14, 117, -/* 200 */ 4, 129, 27, 97, 131, 30, 5, 65, 15, 116, -/* 210 */ 5, 129, 31, 4, 65, 14, 116, 4, 129, 31, -/* 220 */ 6, 64, 15, 116, 4, 129, 32, 7, 62, 16, -/* 230 */ 115, 4, 129, 32, 9, 61, 17, 114, 5, 129, -/* 240 */ 33, 11, 58, 19, 113, 5, 129, 34, 14, 55, -/* 250 */ 21, 112, 5, 129, 35, 40, 111, 5, 129, 36, -/* 260 */ 38, 110, 5, 129, 37, 35, 109, 5, 129, 38, -/* 270 */ 32, 110, 3, 129, 40, 27, 111, 1, 129, 193, -/* 280 */ 129, 30, 4, 103, 9, 129, 30, 7, 100, 15, -/* 290 */ 129, 30, 10, 99, 17, 129, 33, 10, 97, 6, -/* 300 */ 112, 6, 129, 36, 10, 96, 5, 114, 5, 129, -/* 310 */ 39, 10, 96, 4, 115, 4, 129, 42, 10, 95, -/* 320 */ 4, 116, 4, 129, 45, 10, 95, 3, 117, 3, -/* 330 */ 129, 48, 10, 95, 3, 117, 3, 129, 51, 10, -/* 340 */ 95, 4, 116, 4, 129, 54, 10, 96, 4, 115, -/* 350 */ 4, 129, 57, 10, 96, 5, 114, 5, 129, 60, -/* 360 */ 10, 97, 6, 112, 6, 129, 63, 10, 99, 17, -/* 370 */ 129, 66, 10, 100, 15, 129, 69, 10, 103, 9, -/* 380 */ 129, 39, 9, 72, 10, 129, 36, 15, 75, 10, -/* 390 */ 129, 35, 17, 78, 10, 129, 33, 6, 48, 6, -/* 400 */ 81, 10, 129, 32, 5, 50, 5, 84, 10, 129, -/* 410 */ 32, 4, 51, 4, 87, 10, 129, 31, 4, 52, -/* 420 */ 4, 90, 10, 129, 31, 3, 53, 3, 93, 10, -/* 430 */ 129, 31, 3, 53, 3, 96, 10, 129, 31, 4, -/* 440 */ 52, 4, 99, 10, 129, 32, 4, 51, 4, 102, -/* 450 */ 10, 129, 32, 5, 50, 5, 105, 10, 129, 33, -/* 460 */ 6, 48, 6, 108, 10, 129, 35, 17, 111, 10, -/* 470 */ 129, 36, 15, 114, 7, 129, 40, 9, 118, 4, -/* 480 */ 129, 193, 129, 48, 18, 129, 43, 28, 129, 41, -/* 490 */ 32, 129, 39, 36, 129, 37, 40, 129, 35, 44, -/* 500 */ 129, 34, 46, 129, 33, 13, 68, 13, 129, 32, -/* 510 */ 9, 73, 9, 129, 32, 7, 75, 7, 129, 31, -/* 520 */ 6, 77, 6, 129, 31, 5, 78, 5, 129, 30, -/* 530 */ 5, 79, 5, 129, 20, 74, 132, 30, 4, 80, -/* 540 */ 4, 129, 31, 3, 79, 4, 129, 31, 4, 79, -/* 550 */ 4, 129, 32, 3, 78, 4, 129, 32, 4, 76, -/* 560 */ 6, 129, 33, 4, 74, 7, 129, 34, 4, 72, -/* 570 */ 8, 129, 35, 5, 72, 7, 129, 37, 5, 73, -/* 580 */ 4, 129, 39, 4, 74, 1, 129, 129, 193, 130, -/* 590 */ 111, 6, 129, 109, 10, 129, 108, 12, 129, 107, -/* 600 */ 14, 129, 97, 2, 105, 16, 129, 99, 22, 129, -/* 610 */ 102, 18, 129, 105, 14, 129, 108, 9, 129, 194, -/* 620 */ 130, 63, 25, 129, 57, 37, 129, 52, 47, 129, -/* 630 */ 48, 55, 129, 44, 63, 129, 41, 69, 129, 38, -/* 640 */ 75, 129, 36, 79, 129, 34, 83, 129, 33, 28, -/* 650 */ 90, 28, 129, 32, 23, 96, 23, 129, 32, 17, -/* 660 */ 102, 17, 129, 31, 13, 107, 13, 129, 30, 9, -/* 670 */ 112, 9, 129, 30, 5, 116, 5, 129, 30, 1, -/* 680 */ 120, 1, 129, 194, 130, 30, 1, 120, 1, 129, -/* 690 */ 30, 5, 116, 5, 129, 30, 9, 112, 9, 129, -/* 700 */ 31, 13, 107, 13, 129, 32, 17, 102, 17, 129, -/* 710 */ 32, 23, 96, 23, 129, 33, 28, 90, 28, 129, -/* 720 */ 34, 83, 129, 36, 79, 129, 38, 75, 129, 41, -/* 730 */ 69, 129, 44, 63, 129, 48, 55, 129, 52, 47, -/* 740 */ 129, 57, 37, 129, 63, 25, 129, 194, 129, 80, -/* 750 */ 4, 130, 80, 4, 129, 68, 2, 80, 4, 94, -/* 760 */ 2, 129, 66, 6, 80, 4, 92, 6, 129, 67, -/* 770 */ 7, 80, 4, 90, 7, 129, 69, 7, 80, 4, -/* 780 */ 88, 7, 129, 71, 6, 80, 4, 87, 6, 129, -/* 790 */ 72, 20, 129, 74, 16, 129, 76, 12, 129, 62, -/* 800 */ 40, 131, 76, 12, 129, 74, 16, 129, 72, 20, -/* 810 */ 129, 71, 6, 80, 4, 87, 6, 129, 69, 7, -/* 820 */ 80, 4, 88, 7, 129, 67, 7, 80, 4, 90, -/* 830 */ 7, 129, 66, 6, 80, 4, 92, 6, 129, 68, -/* 840 */ 2, 80, 4, 94, 2, 129, 80, 4, 130, 193, -/* 850 */ 129, 60, 4, 139, 41, 42, 131, 60, 4, 139, -/* 860 */ 193, 130, 34, 6, 129, 32, 10, 129, 31, 12, -/* 870 */ 129, 30, 14, 129, 20, 2, 28, 16, 129, 22, -/* 880 */ 22, 129, 24, 19, 129, 27, 15, 129, 31, 9, -/* 890 */ 129, 194, 129, 60, 4, 152, 193, 130, 34, 6, -/* 900 */ 129, 32, 10, 129, 31, 12, 129, 30, 14, 131, -/* 910 */ 31, 12, 129, 32, 10, 129, 34, 6, 129, 194, -/* 920 */ 129, 30, 4, 129, 30, 7, 129, 30, 10, 129, -/* 930 */ 33, 10, 129, 36, 10, 129, 39, 10, 129, 42, -/* 940 */ 10, 129, 45, 10, 129, 48, 10, 129, 51, 10, -/* 950 */ 129, 54, 10, 129, 57, 10, 129, 60, 10, 129, -/* 960 */ 63, 10, 129, 66, 10, 129, 69, 10, 129, 72, -/* 970 */ 10, 129, 75, 10, 129, 78, 10, 129, 81, 10, -/* 980 */ 129, 84, 10, 129, 87, 10, 129, 90, 10, 129, -/* 990 */ 93, 10, 129, 96, 10, 129, 99, 10, 129, 102, -/* 1000 */ 10, 129, 105, 10, 129, 108, 10, 129, 111, 10, -/* 1010 */ 129, 114, 7, 129, 117, 4, 129, 193, 129, 60, -/* 1020 */ 31, 129, 53, 45, 129, 49, 53, 129, 46, 59, -/* 1030 */ 129, 43, 65, 129, 41, 69, 129, 39, 73, 129, -/* 1040 */ 37, 77, 129, 36, 79, 129, 35, 15, 101, 15, -/* 1050 */ 129, 34, 11, 106, 11, 129, 33, 9, 109, 9, -/* 1060 */ 129, 32, 7, 112, 7, 129, 31, 6, 114, 6, -/* 1070 */ 129, 31, 5, 115, 5, 129, 30, 5, 116, 5, -/* 1080 */ 129, 30, 4, 117, 4, 132, 30, 5, 116, 5, -/* 1090 */ 129, 31, 5, 115, 5, 129, 31, 6, 114, 6, -/* 1100 */ 129, 32, 7, 112, 7, 129, 33, 9, 109, 9, -/* 1110 */ 129, 34, 11, 106, 11, 129, 35, 15, 101, 15, -/* 1120 */ 129, 36, 79, 129, 37, 77, 129, 39, 73, 129, -/* 1130 */ 41, 69, 129, 43, 65, 129, 46, 59, 129, 49, -/* 1140 */ 53, 129, 53, 45, 129, 60, 31, 129, 193, 129, -/* 1150 */ 30, 4, 129, 30, 4, 100, 1, 129, 30, 4, -/* 1160 */ 100, 3, 129, 30, 4, 100, 5, 129, 30, 76, -/* 1170 */ 129, 30, 78, 129, 30, 80, 129, 30, 82, 129, -/* 1180 */ 30, 83, 129, 30, 85, 129, 30, 87, 129, 30, -/* 1190 */ 89, 129, 30, 91, 129, 30, 4, 132, 193, 129, -/* 1200 */ 30, 3, 129, 30, 7, 129, 30, 10, 112, 1, -/* 1210 */ 129, 30, 13, 112, 2, 129, 30, 16, 112, 3, -/* 1220 */ 129, 30, 18, 111, 5, 129, 30, 21, 111, 6, -/* 1230 */ 129, 30, 23, 112, 6, 129, 30, 14, 47, 8, -/* 1240 */ 113, 6, 129, 30, 14, 49, 8, 114, 5, 129, -/* 1250 */ 30, 14, 51, 8, 115, 5, 129, 30, 14, 53, -/* 1260 */ 8, 116, 4, 129, 30, 14, 55, 8, 116, 5, -/* 1270 */ 129, 30, 14, 56, 9, 117, 4, 129, 30, 14, -/* 1280 */ 57, 9, 117, 4, 129, 30, 14, 58, 10, 117, -/* 1290 */ 4, 129, 30, 14, 59, 10, 117, 4, 129, 30, -/* 1300 */ 14, 60, 11, 117, 4, 129, 30, 14, 61, 11, -/* 1310 */ 116, 5, 129, 30, 14, 62, 11, 116, 5, 129, -/* 1320 */ 30, 14, 63, 12, 115, 6, 129, 30, 14, 64, -/* 1330 */ 13, 114, 7, 129, 30, 14, 65, 13, 113, 8, -/* 1340 */ 129, 30, 14, 65, 15, 111, 9, 129, 30, 14, -/* 1350 */ 66, 16, 109, 11, 129, 30, 14, 67, 17, 107, -/* 1360 */ 12, 129, 30, 14, 68, 20, 103, 16, 129, 30, -/* 1370 */ 14, 69, 49, 129, 30, 14, 70, 47, 129, 30, -/* 1380 */ 14, 71, 45, 129, 30, 14, 73, 42, 129, 30, -/* 1390 */ 15, 75, 38, 129, 33, 12, 77, 34, 129, 36, -/* 1400 */ 10, 79, 30, 129, 40, 6, 82, 23, 129, 44, -/* 1410 */ 3, 86, 15, 129, 47, 1, 129, 193, 129, 129, -/* 1420 */ 38, 3, 129, 37, 5, 111, 1, 129, 36, 7, -/* 1430 */ 111, 2, 129, 35, 9, 110, 5, 129, 34, 8, -/* 1440 */ 110, 6, 129, 33, 7, 109, 8, 129, 32, 7, -/* 1450 */ 110, 8, 129, 32, 6, 112, 7, 129, 31, 6, -/* 1460 */ 113, 6, 129, 31, 5, 114, 6, 129, 30, 5, -/* 1470 */ 115, 5, 129, 30, 5, 116, 4, 129, 30, 4, -/* 1480 */ 117, 4, 131, 30, 4, 117, 4, 129, 30, 4, -/* 1490 */ 79, 2, 117, 4, 129, 30, 5, 78, 4, 117, -/* 1500 */ 4, 129, 30, 5, 77, 6, 116, 5, 129, 30, -/* 1510 */ 6, 76, 8, 115, 6, 129, 30, 7, 75, 11, -/* 1520 */ 114, 6, 129, 30, 8, 73, 15, 112, 8, 129, -/* 1530 */ 31, 9, 71, 19, 110, 9, 129, 31, 11, 68, -/* 1540 */ 26, 107, 12, 129, 32, 13, 65, 14, 82, 36, -/* 1550 */ 129, 32, 16, 61, 17, 83, 34, 129, 33, 44, -/* 1560 */ 84, 32, 129, 34, 42, 85, 30, 129, 35, 40, -/* 1570 */ 87, 27, 129, 36, 38, 89, 23, 129, 38, 34, -/* 1580 */ 92, 17, 129, 40, 30, 95, 11, 129, 42, 26, -/* 1590 */ 129, 45, 20, 129, 49, 11, 129, 193, 129, 49, -/* 1600 */ 1, 129, 49, 4, 129, 49, 6, 129, 49, 8, -/* 1610 */ 129, 49, 10, 129, 49, 12, 129, 49, 14, 129, -/* 1620 */ 49, 17, 129, 49, 19, 129, 49, 21, 129, 49, -/* 1630 */ 23, 129, 49, 14, 65, 9, 129, 49, 14, 67, -/* 1640 */ 9, 129, 49, 14, 69, 9, 129, 49, 14, 71, -/* 1650 */ 10, 129, 49, 14, 74, 9, 129, 49, 14, 76, -/* 1660 */ 9, 129, 49, 14, 78, 9, 129, 49, 14, 80, -/* 1670 */ 9, 129, 49, 14, 82, 9, 129, 49, 14, 84, -/* 1680 */ 9, 129, 30, 4, 49, 14, 86, 10, 129, 30, -/* 1690 */ 4, 49, 14, 89, 9, 129, 30, 4, 49, 14, -/* 1700 */ 91, 9, 129, 30, 4, 49, 14, 93, 9, 129, -/* 1710 */ 30, 74, 129, 30, 76, 129, 30, 78, 129, 30, -/* 1720 */ 81, 129, 30, 83, 129, 30, 85, 129, 30, 87, -/* 1730 */ 129, 30, 89, 129, 30, 91, 129, 30, 4, 49, -/* 1740 */ 14, 132, 193, 129, 37, 1, 129, 36, 3, 77, -/* 1750 */ 3, 129, 35, 5, 78, 11, 129, 34, 7, 78, -/* 1760 */ 21, 129, 33, 7, 79, 29, 129, 32, 7, 79, -/* 1770 */ 38, 129, 32, 6, 80, 4, 92, 29, 129, 31, -/* 1780 */ 6, 80, 5, 102, 19, 129, 31, 5, 80, 6, -/* 1790 */ 107, 14, 129, 31, 4, 81, 5, 107, 14, 129, -/* 1800 */ 30, 5, 81, 6, 107, 14, 129, 30, 4, 81, -/* 1810 */ 6, 107, 14, 130, 30, 4, 81, 7, 107, 14, -/* 1820 */ 129, 30, 4, 80, 8, 107, 14, 130, 30, 5, -/* 1830 */ 80, 8, 107, 14, 129, 30, 5, 79, 9, 107, -/* 1840 */ 14, 129, 31, 5, 79, 9, 107, 14, 129, 31, -/* 1850 */ 6, 78, 10, 107, 14, 129, 32, 6, 76, 11, -/* 1860 */ 107, 14, 129, 32, 8, 74, 13, 107, 14, 129, -/* 1870 */ 33, 10, 71, 16, 107, 14, 129, 33, 15, 67, -/* 1880 */ 19, 107, 14, 129, 34, 51, 107, 14, 129, 35, -/* 1890 */ 49, 107, 14, 129, 36, 47, 107, 14, 129, 37, -/* 1900 */ 45, 107, 14, 129, 39, 41, 107, 14, 129, 41, -/* 1910 */ 37, 107, 14, 129, 44, 32, 107, 14, 129, 47, -/* 1920 */ 25, 111, 10, 129, 51, 16, 115, 6, 129, 119, -/* 1930 */ 2, 129, 193, 129, 56, 39, 129, 51, 49, 129, -/* 1940 */ 47, 57, 129, 44, 63, 129, 42, 67, 129, 40, -/* 1950 */ 71, 129, 38, 75, 129, 37, 77, 129, 35, 81, -/* 1960 */ 129, 34, 16, 74, 5, 101, 16, 129, 33, 11, -/* 1970 */ 76, 5, 107, 11, 129, 32, 9, 77, 5, 110, -/* 1980 */ 9, 129, 32, 7, 79, 4, 112, 7, 129, 31, -/* 1990 */ 6, 80, 4, 114, 6, 129, 31, 5, 81, 4, -/* 2000 */ 115, 5, 129, 30, 5, 82, 4, 116, 5, 129, -/* 2010 */ 30, 4, 82, 4, 116, 5, 129, 30, 4, 82, -/* 2020 */ 5, 117, 4, 131, 30, 5, 82, 5, 117, 4, -/* 2030 */ 129, 31, 5, 81, 6, 117, 4, 129, 31, 6, -/* 2040 */ 80, 7, 117, 4, 129, 32, 7, 79, 8, 117, -/* 2050 */ 4, 129, 32, 9, 77, 9, 116, 5, 129, 33, -/* 2060 */ 11, 75, 11, 116, 4, 129, 34, 16, 69, 16, -/* 2070 */ 115, 5, 129, 35, 49, 114, 5, 129, 37, 46, -/* 2080 */ 113, 5, 129, 38, 44, 112, 6, 129, 40, 41, -/* 2090 */ 112, 5, 129, 42, 37, 113, 3, 129, 44, 33, -/* 2100 */ 114, 1, 129, 47, 27, 129, 51, 17, 129, 193, -/* 2110 */ 129, 103, 2, 129, 103, 6, 129, 104, 9, 129, -/* 2120 */ 105, 12, 129, 106, 15, 129, 107, 14, 135, 30, -/* 2130 */ 10, 107, 14, 129, 30, 17, 107, 14, 129, 30, -/* 2140 */ 25, 107, 14, 129, 30, 31, 107, 14, 129, 30, -/* 2150 */ 37, 107, 14, 129, 30, 42, 107, 14, 129, 30, -/* 2160 */ 46, 107, 14, 129, 30, 50, 107, 14, 129, 30, -/* 2170 */ 54, 107, 14, 129, 30, 58, 107, 14, 129, 59, -/* 2180 */ 32, 107, 14, 129, 64, 30, 107, 14, 129, 74, -/* 2190 */ 23, 107, 14, 129, 81, 18, 107, 14, 129, 86, -/* 2200 */ 16, 107, 14, 129, 91, 14, 107, 14, 129, 96, -/* 2210 */ 25, 129, 100, 21, 129, 104, 17, 129, 107, 14, -/* 2220 */ 129, 111, 10, 129, 114, 7, 129, 117, 4, 129, -/* 2230 */ 120, 1, 129, 193, 129, 48, 13, 129, 44, 21, -/* 2240 */ 129, 42, 26, 129, 40, 30, 92, 12, 129, 38, -/* 2250 */ 34, 88, 20, 129, 36, 37, 86, 25, 129, 35, -/* 2260 */ 39, 84, 29, 129, 34, 13, 63, 12, 82, 33, -/* 2270 */ 129, 33, 11, 67, 9, 80, 36, 129, 32, 9, -/* 2280 */ 70, 7, 79, 38, 129, 31, 8, 72, 46, 129, -/* 2290 */ 30, 7, 74, 22, 108, 11, 129, 30, 6, 75, -/* 2300 */ 19, 111, 9, 129, 30, 5, 75, 17, 113, 7, -/* 2310 */ 129, 30, 5, 74, 16, 114, 6, 129, 30, 4, -/* 2320 */ 73, 16, 115, 6, 129, 30, 4, 72, 16, 116, -/* 2330 */ 5, 129, 30, 4, 72, 15, 117, 4, 129, 30, -/* 2340 */ 4, 71, 16, 117, 4, 129, 30, 5, 70, 16, -/* 2350 */ 117, 4, 129, 30, 5, 70, 15, 117, 4, 129, -/* 2360 */ 30, 6, 69, 15, 116, 5, 129, 30, 7, 68, -/* 2370 */ 17, 115, 5, 129, 30, 9, 67, 19, 114, 6, -/* 2380 */ 129, 30, 10, 65, 22, 113, 6, 129, 31, 12, -/* 2390 */ 63, 27, 110, 9, 129, 32, 14, 60, 21, 84, -/* 2400 */ 9, 106, 12, 129, 33, 47, 85, 32, 129, 34, -/* 2410 */ 45, 86, 30, 129, 35, 43, 88, 26, 129, 36, -/* 2420 */ 40, 90, 22, 129, 38, 36, 93, 17, 129, 40, -/* 2430 */ 32, 96, 10, 129, 42, 28, 129, 44, 23, 129, -/* 2440 */ 48, 15, 129, 193, 129, 83, 17, 129, 77, 27, -/* 2450 */ 129, 36, 1, 74, 33, 129, 35, 3, 72, 37, -/* 2460 */ 129, 34, 5, 70, 41, 129, 33, 6, 69, 44, -/* 2470 */ 129, 33, 5, 68, 46, 129, 32, 5, 67, 49, -/* 2480 */ 129, 31, 5, 66, 17, 101, 16, 129, 31, 5, -/* 2490 */ 66, 11, 108, 10, 129, 30, 4, 65, 9, 110, -/* 2500 */ 9, 129, 30, 4, 64, 8, 112, 7, 129, 30, -/* 2510 */ 4, 64, 7, 114, 6, 129, 30, 4, 64, 6, -/* 2520 */ 115, 5, 129, 30, 4, 64, 5, 116, 5, 129, -/* 2530 */ 30, 4, 64, 5, 117, 4, 131, 30, 4, 65, -/* 2540 */ 4, 117, 4, 129, 30, 5, 65, 4, 116, 5, -/* 2550 */ 129, 31, 5, 66, 4, 115, 5, 129, 31, 6, -/* 2560 */ 67, 4, 114, 6, 129, 32, 7, 68, 4, 112, -/* 2570 */ 7, 129, 32, 9, 69, 5, 110, 9, 129, 33, -/* 2580 */ 11, 70, 5, 107, 11, 129, 34, 16, 72, 5, -/* 2590 */ 101, 16, 129, 35, 81, 129, 37, 77, 129, 38, -/* 2600 */ 75, 129, 40, 71, 129, 42, 67, 129, 44, 63, -/* 2610 */ 129, 47, 57, 129, 51, 49, 129, 56, 39, 129, -/* 2620 */ 193, 130, 34, 6, 74, 6, 129, 32, 10, 72, -/* 2630 */ 10, 129, 31, 12, 71, 12, 129, 30, 14, 70, -/* 2640 */ 14, 131, 31, 12, 71, 12, 129, 32, 10, 72, -/* 2650 */ 10, 129, 34, 6, 74, 6, 129, 194, 130, 34, -/* 2660 */ 6, 74, 6, 129, 32, 10, 72, 10, 129, 31, -/* 2670 */ 12, 71, 12, 129, 30, 14, 70, 14, 129, 20, -/* 2680 */ 2, 28, 16, 70, 14, 129, 22, 22, 70, 14, -/* 2690 */ 129, 24, 19, 71, 12, 129, 27, 15, 72, 10, -/* 2700 */ 129, 31, 9, 74, 6, 129, 194, 129, 53, 4, -/* 2710 */ 63, 4, 152, 193, 130, 99, 7, 129, 97, 13, -/* 2720 */ 129, 96, 16, 129, 96, 18, 129, 96, 19, 129, -/* 2730 */ 97, 19, 129, 99, 6, 110, 7, 129, 112, 6, -/* 2740 */ 129, 114, 5, 129, 34, 6, 57, 5, 115, 4, -/* 2750 */ 129, 32, 10, 54, 12, 116, 4, 129, 31, 12, -/* 2760 */ 53, 16, 117, 3, 129, 30, 14, 52, 20, 117, -/* 2770 */ 4, 129, 30, 14, 52, 23, 117, 4, 129, 30, -/* 2780 */ 14, 52, 25, 117, 4, 129, 31, 12, 52, 27, -/* 2790 */ 117, 4, 129, 32, 10, 53, 10, 70, 11, 116, -/* 2800 */ 5, 129, 34, 6, 55, 5, 73, 10, 115, 6, -/* 2810 */ 129, 74, 11, 114, 7, 129, 75, 12, 112, 9, -/* 2820 */ 129, 76, 13, 110, 10, 129, 77, 16, 106, 14, -/* 2830 */ 129, 78, 41, 129, 80, 38, 129, 81, 36, 129, -/* 2840 */ 82, 34, 129, 84, 30, 129, 86, 26, 129, 88, -/* 2850 */ 22, 129, 92, 14, 129, 194, 129, 55, 15, 129, -/* 2860 */ 50, 25, 129, 47, 32, 129, 45, 13, 70, 12, -/* 2870 */ 129, 43, 9, 76, 10, 129, 42, 6, 79, 8, -/* 2880 */ 129, 41, 5, 81, 7, 129, 40, 4, 84, 6, -/* 2890 */ 129, 39, 4, 59, 12, 85, 6, 129, 38, 4, -/* 2900 */ 55, 19, 87, 5, 129, 37, 4, 53, 23, 88, -/* 2910 */ 4, 129, 36, 4, 51, 8, 71, 6, 89, 4, -/* 2920 */ 129, 36, 4, 51, 6, 73, 4, 89, 4, 129, -/* 2930 */ 36, 4, 50, 6, 74, 4, 90, 3, 129, 35, -/* 2940 */ 4, 50, 5, 75, 3, 90, 4, 129, 35, 4, -/* 2950 */ 50, 4, 75, 4, 90, 4, 131, 35, 4, 50, -/* 2960 */ 5, 75, 4, 90, 4, 129, 36, 4, 51, 5, -/* 2970 */ 75, 4, 90, 4, 129, 36, 4, 51, 6, 75, -/* 2980 */ 4, 90, 4, 129, 36, 4, 53, 26, 90, 4, -/* 2990 */ 129, 37, 4, 54, 25, 90, 4, 129, 37, 4, -/* 3000 */ 52, 27, 90, 3, 129, 38, 4, 52, 4, 89, -/* 3010 */ 4, 129, 39, 4, 51, 4, 88, 4, 129, 40, -/* 3020 */ 4, 50, 4, 87, 5, 129, 41, 4, 50, 4, -/* 3030 */ 86, 5, 129, 42, 4, 50, 4, 85, 5, 129, -/* 3040 */ 43, 3, 50, 4, 83, 6, 129, 44, 2, 51, -/* 3050 */ 5, 80, 7, 129, 46, 1, 52, 6, 76, 9, -/* 3060 */ 129, 54, 28, 129, 56, 23, 129, 60, 16, 129, -/* 3070 */ 193, 129, 30, 4, 132, 30, 5, 129, 30, 8, -/* 3080 */ 129, 30, 12, 129, 30, 16, 129, 30, 4, 37, -/* 3090 */ 12, 129, 30, 4, 41, 12, 129, 30, 4, 44, -/* 3100 */ 13, 129, 30, 4, 48, 13, 129, 52, 13, 129, -/* 3110 */ 56, 12, 129, 58, 14, 129, 58, 4, 64, 12, -/* 3120 */ 129, 58, 4, 68, 12, 129, 58, 4, 72, 12, -/* 3130 */ 129, 58, 4, 75, 13, 129, 58, 4, 79, 13, -/* 3140 */ 129, 58, 4, 83, 13, 129, 58, 4, 87, 13, -/* 3150 */ 129, 58, 4, 91, 12, 129, 58, 4, 95, 12, -/* 3160 */ 129, 58, 4, 96, 15, 129, 58, 4, 93, 22, -/* 3170 */ 129, 58, 4, 89, 30, 129, 58, 4, 85, 36, -/* 3180 */ 129, 58, 4, 81, 38, 129, 58, 4, 77, 38, -/* 3190 */ 129, 58, 4, 73, 38, 129, 58, 4, 70, 37, -/* 3200 */ 129, 58, 4, 66, 37, 129, 58, 41, 129, 58, -/* 3210 */ 37, 129, 54, 38, 129, 30, 4, 50, 38, 129, -/* 3220 */ 30, 4, 46, 38, 129, 30, 4, 42, 38, 129, -/* 3230 */ 30, 4, 38, 39, 129, 30, 43, 129, 30, 39, -/* 3240 */ 129, 30, 35, 129, 30, 31, 129, 30, 27, 129, -/* 3250 */ 30, 24, 129, 30, 20, 129, 30, 16, 129, 30, -/* 3260 */ 12, 129, 30, 8, 129, 30, 5, 129, 30, 4, -/* 3270 */ 132, 193, 129, 30, 4, 117, 4, 132, 30, 91, -/* 3280 */ 137, 30, 4, 80, 4, 117, 4, 138, 30, 4, -/* 3290 */ 80, 5, 116, 5, 129, 30, 5, 79, 6, 116, -/* 3300 */ 5, 130, 30, 6, 78, 8, 115, 6, 129, 31, -/* 3310 */ 6, 77, 9, 115, 6, 129, 31, 7, 76, 11, -/* 3320 */ 114, 6, 129, 31, 8, 75, 14, 112, 8, 129, -/* 3330 */ 32, 8, 74, 16, 111, 9, 129, 32, 9, 73, -/* 3340 */ 19, 109, 10, 129, 33, 10, 71, 24, 106, 13, -/* 3350 */ 129, 33, 13, 68, 12, 83, 35, 129, 34, 16, -/* 3360 */ 64, 15, 84, 33, 129, 35, 43, 85, 31, 129, -/* 3370 */ 36, 41, 86, 29, 129, 37, 39, 88, 25, 129, -/* 3380 */ 38, 37, 90, 21, 129, 40, 33, 93, 15, 129, -/* 3390 */ 42, 29, 96, 9, 129, 45, 24, 129, 49, 16, -/* 3400 */ 129, 193, 129, 63, 25, 129, 57, 37, 129, 53, -/* 3410 */ 45, 129, 50, 51, 129, 47, 57, 129, 45, 61, -/* 3420 */ 129, 43, 65, 129, 41, 69, 129, 39, 73, 129, -/* 3430 */ 38, 25, 92, 21, 129, 36, 21, 97, 18, 129, -/* 3440 */ 35, 18, 102, 14, 129, 34, 16, 106, 11, 129, -/* 3450 */ 33, 14, 108, 10, 129, 32, 12, 111, 8, 129, -/* 3460 */ 32, 10, 113, 6, 129, 31, 10, 114, 6, 129, -/* 3470 */ 31, 8, 115, 5, 129, 30, 8, 116, 5, 129, -/* 3480 */ 30, 7, 116, 5, 129, 30, 6, 117, 4, 130, -/* 3490 */ 30, 5, 117, 4, 131, 31, 4, 116, 5, 129, -/* 3500 */ 32, 4, 116, 4, 129, 32, 5, 115, 5, 129, -/* 3510 */ 33, 4, 114, 5, 129, 34, 4, 112, 6, 129, -/* 3520 */ 35, 4, 110, 7, 129, 37, 4, 107, 9, 129, -/* 3530 */ 39, 4, 103, 12, 129, 41, 4, 103, 18, 129, -/* 3540 */ 43, 4, 103, 18, 129, 45, 5, 103, 18, 129, -/* 3550 */ 48, 5, 103, 18, 129, 51, 1, 129, 193, 129, -/* 3560 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, -/* 3570 */ 117, 4, 135, 30, 5, 116, 5, 130, 30, 6, -/* 3580 */ 115, 6, 130, 31, 6, 114, 6, 129, 31, 7, -/* 3590 */ 113, 7, 129, 32, 7, 112, 7, 129, 32, 8, -/* 3600 */ 111, 8, 129, 33, 9, 109, 9, 129, 33, 12, -/* 3610 */ 106, 12, 129, 34, 13, 104, 13, 129, 35, 15, -/* 3620 */ 101, 15, 129, 36, 19, 96, 19, 129, 37, 24, -/* 3630 */ 90, 24, 129, 39, 73, 129, 40, 71, 129, 42, -/* 3640 */ 67, 129, 44, 63, 129, 46, 59, 129, 49, 53, -/* 3650 */ 129, 52, 47, 129, 56, 39, 129, 61, 29, 129, -/* 3660 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 137, -/* 3670 */ 30, 4, 80, 4, 117, 4, 140, 30, 4, 79, -/* 3680 */ 6, 117, 4, 129, 30, 4, 77, 10, 117, 4, -/* 3690 */ 129, 30, 4, 73, 18, 117, 4, 132, 30, 4, -/* 3700 */ 117, 4, 130, 30, 5, 116, 5, 130, 30, 7, -/* 3710 */ 114, 7, 129, 30, 8, 113, 8, 129, 30, 11, -/* 3720 */ 110, 11, 129, 30, 18, 103, 18, 132, 193, 129, -/* 3730 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, -/* 3740 */ 80, 4, 117, 4, 132, 80, 4, 117, 4, 136, -/* 3750 */ 79, 6, 117, 4, 129, 77, 10, 117, 4, 129, -/* 3760 */ 73, 18, 117, 4, 132, 117, 4, 130, 116, 5, -/* 3770 */ 130, 114, 7, 129, 113, 8, 129, 110, 11, 129, -/* 3780 */ 103, 18, 132, 193, 129, 63, 25, 129, 57, 37, -/* 3790 */ 129, 53, 45, 129, 50, 51, 129, 47, 57, 129, -/* 3800 */ 45, 61, 129, 43, 65, 129, 41, 69, 129, 39, -/* 3810 */ 73, 129, 38, 25, 92, 21, 129, 36, 21, 97, -/* 3820 */ 18, 129, 35, 18, 102, 14, 129, 34, 16, 106, -/* 3830 */ 11, 129, 33, 14, 108, 10, 129, 32, 12, 111, -/* 3840 */ 8, 129, 32, 10, 113, 6, 129, 31, 10, 114, -/* 3850 */ 6, 129, 31, 8, 115, 5, 129, 30, 8, 116, -/* 3860 */ 5, 129, 30, 7, 116, 5, 129, 30, 6, 117, -/* 3870 */ 4, 130, 30, 5, 117, 4, 131, 30, 5, 75, -/* 3880 */ 4, 116, 5, 129, 31, 5, 75, 4, 116, 4, -/* 3890 */ 129, 31, 6, 75, 4, 115, 5, 129, 32, 7, -/* 3900 */ 75, 4, 114, 5, 129, 32, 9, 75, 4, 112, -/* 3910 */ 6, 129, 33, 11, 75, 4, 110, 7, 129, 34, -/* 3920 */ 15, 75, 4, 107, 9, 129, 35, 44, 103, 12, -/* 3930 */ 129, 36, 43, 103, 18, 129, 38, 41, 103, 18, -/* 3940 */ 129, 39, 40, 103, 18, 129, 41, 38, 103, 18, -/* 3950 */ 129, 44, 35, 129, 48, 31, 129, 52, 27, 129, -/* 3960 */ 61, 18, 129, 193, 129, 30, 4, 117, 4, 132, -/* 3970 */ 30, 91, 137, 30, 4, 80, 4, 117, 4, 132, -/* 3980 */ 80, 4, 140, 30, 4, 80, 4, 117, 4, 132, -/* 3990 */ 30, 91, 137, 30, 4, 117, 4, 132, 193, 129, -/* 4000 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, -/* 4010 */ 117, 4, 132, 193, 129, 44, 7, 129, 40, 13, -/* 4020 */ 129, 37, 17, 129, 35, 20, 129, 34, 22, 129, -/* 4030 */ 33, 23, 129, 32, 24, 129, 32, 23, 129, 31, -/* 4040 */ 6, 41, 13, 129, 31, 5, 42, 11, 129, 30, -/* 4050 */ 5, 44, 7, 129, 30, 4, 132, 30, 5, 130, -/* 4060 */ 31, 5, 129, 31, 6, 117, 4, 129, 31, 8, -/* 4070 */ 117, 4, 129, 32, 9, 117, 4, 129, 33, 11, -/* 4080 */ 117, 4, 129, 34, 87, 129, 35, 86, 129, 36, -/* 4090 */ 85, 129, 37, 84, 129, 38, 83, 129, 40, 81, -/* 4100 */ 129, 42, 79, 129, 45, 76, 129, 50, 71, 129, -/* 4110 */ 117, 4, 132, 193, 129, 30, 4, 117, 4, 132, -/* 4120 */ 30, 91, 137, 30, 4, 76, 8, 117, 4, 129, -/* 4130 */ 30, 4, 73, 13, 117, 4, 129, 30, 4, 70, -/* 4140 */ 18, 117, 4, 129, 30, 4, 67, 23, 117, 4, -/* 4150 */ 129, 65, 26, 129, 62, 31, 129, 59, 35, 129, -/* 4160 */ 56, 29, 89, 7, 129, 53, 29, 91, 7, 129, -/* 4170 */ 50, 29, 93, 7, 129, 47, 29, 95, 6, 129, -/* 4180 */ 30, 4, 45, 29, 96, 7, 129, 30, 4, 42, -/* 4190 */ 29, 98, 7, 129, 30, 4, 39, 30, 100, 6, -/* 4200 */ 129, 30, 4, 36, 30, 101, 7, 129, 30, 33, -/* 4210 */ 103, 7, 117, 4, 129, 30, 30, 105, 6, 117, -/* 4220 */ 4, 129, 30, 27, 106, 7, 117, 4, 129, 30, -/* 4230 */ 25, 108, 7, 117, 4, 129, 30, 22, 110, 11, -/* 4240 */ 129, 30, 19, 111, 10, 129, 30, 16, 113, 8, -/* 4250 */ 129, 30, 13, 115, 6, 129, 30, 11, 116, 5, -/* 4260 */ 129, 30, 8, 117, 4, 129, 30, 5, 117, 4, -/* 4270 */ 129, 30, 4, 117, 4, 130, 30, 4, 130, 193, -/* 4280 */ 129, 30, 4, 117, 4, 132, 30, 91, 137, 30, -/* 4290 */ 4, 117, 4, 132, 30, 4, 144, 30, 5, 130, -/* 4300 */ 30, 7, 129, 30, 8, 129, 30, 11, 129, 30, -/* 4310 */ 18, 132, 193, 129, 30, 4, 117, 4, 132, 30, -/* 4320 */ 91, 132, 30, 4, 103, 18, 129, 30, 4, 97, -/* 4330 */ 24, 129, 30, 4, 92, 29, 129, 30, 4, 87, -/* 4340 */ 34, 129, 81, 40, 129, 76, 45, 129, 70, 49, -/* 4350 */ 129, 65, 49, 129, 60, 49, 129, 55, 49, 129, -/* 4360 */ 50, 48, 129, 44, 49, 129, 39, 48, 129, 33, -/* 4370 */ 49, 129, 30, 47, 129, 34, 37, 129, 40, 26, -/* 4380 */ 129, 46, 19, 129, 52, 19, 129, 58, 19, 129, -/* 4390 */ 64, 19, 129, 70, 19, 129, 76, 19, 129, 82, -/* 4400 */ 19, 129, 30, 4, 88, 18, 129, 30, 4, 94, -/* 4410 */ 18, 129, 30, 4, 100, 18, 129, 30, 4, 106, -/* 4420 */ 15, 129, 30, 91, 137, 30, 4, 117, 4, 132, -/* 4430 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 132, -/* 4440 */ 30, 4, 107, 14, 129, 30, 4, 104, 17, 129, -/* 4450 */ 30, 4, 101, 20, 129, 30, 4, 99, 22, 129, -/* 4460 */ 96, 25, 129, 93, 28, 129, 91, 28, 129, 88, -/* 4470 */ 29, 129, 85, 29, 129, 82, 29, 129, 79, 29, -/* 4480 */ 129, 76, 29, 129, 74, 29, 129, 71, 29, 129, -/* 4490 */ 68, 29, 129, 65, 29, 129, 62, 29, 129, 60, -/* 4500 */ 29, 129, 57, 29, 129, 54, 29, 129, 51, 29, -/* 4510 */ 129, 49, 28, 129, 46, 29, 129, 43, 29, 129, -/* 4520 */ 40, 29, 117, 4, 129, 37, 29, 117, 4, 129, -/* 4530 */ 35, 29, 117, 4, 129, 32, 29, 117, 4, 129, -/* 4540 */ 30, 91, 132, 117, 4, 132, 193, 129, 63, 25, -/* 4550 */ 129, 57, 37, 129, 53, 45, 129, 50, 51, 129, -/* 4560 */ 47, 57, 129, 45, 61, 129, 43, 65, 129, 41, -/* 4570 */ 69, 129, 39, 73, 129, 38, 21, 92, 21, 129, -/* 4580 */ 36, 18, 97, 18, 129, 35, 14, 102, 14, 129, -/* 4590 */ 34, 11, 106, 11, 129, 33, 10, 108, 10, 129, -/* 4600 */ 32, 8, 111, 8, 129, 32, 6, 113, 6, 129, -/* 4610 */ 31, 6, 114, 6, 129, 31, 5, 115, 5, 129, -/* 4620 */ 30, 5, 116, 5, 130, 30, 4, 117, 4, 132, -/* 4630 */ 30, 5, 116, 5, 130, 31, 5, 115, 5, 129, -/* 4640 */ 31, 6, 114, 6, 129, 32, 6, 113, 6, 129, -/* 4650 */ 32, 8, 111, 8, 129, 33, 10, 108, 10, 129, -/* 4660 */ 34, 11, 106, 11, 129, 35, 14, 102, 14, 129, -/* 4670 */ 36, 18, 97, 18, 129, 38, 21, 92, 21, 129, -/* 4680 */ 39, 73, 129, 41, 69, 129, 43, 65, 129, 45, -/* 4690 */ 61, 129, 47, 57, 129, 50, 51, 129, 53, 45, -/* 4700 */ 129, 57, 37, 129, 63, 25, 129, 193, 129, 30, -/* 4710 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 80, -/* 4720 */ 4, 117, 4, 132, 80, 4, 117, 4, 134, 80, -/* 4730 */ 5, 116, 5, 131, 80, 6, 115, 6, 130, 81, -/* 4740 */ 6, 114, 6, 129, 81, 8, 112, 8, 129, 81, -/* 4750 */ 9, 111, 9, 129, 82, 10, 109, 10, 129, 82, -/* 4760 */ 13, 106, 13, 129, 83, 35, 129, 84, 33, 129, -/* 4770 */ 85, 31, 129, 86, 29, 129, 88, 25, 129, 90, -/* 4780 */ 21, 129, 93, 15, 129, 96, 9, 129, 193, 129, -/* 4790 */ 63, 25, 129, 57, 37, 129, 53, 45, 129, 50, -/* 4800 */ 51, 129, 47, 57, 129, 45, 61, 129, 43, 65, -/* 4810 */ 129, 41, 69, 129, 39, 73, 129, 38, 21, 92, -/* 4820 */ 21, 129, 36, 18, 97, 18, 129, 35, 14, 102, -/* 4830 */ 14, 129, 34, 11, 106, 11, 129, 33, 10, 108, -/* 4840 */ 10, 129, 32, 8, 111, 8, 129, 32, 6, 113, -/* 4850 */ 6, 129, 31, 6, 114, 6, 129, 31, 5, 115, -/* 4860 */ 5, 129, 30, 5, 116, 5, 130, 30, 4, 39, -/* 4870 */ 2, 117, 4, 129, 30, 4, 40, 4, 117, 4, -/* 4880 */ 129, 30, 4, 41, 5, 117, 4, 129, 30, 4, -/* 4890 */ 41, 6, 117, 4, 129, 30, 5, 40, 8, 116, -/* 4900 */ 5, 129, 30, 5, 39, 10, 116, 5, 129, 31, -/* 4910 */ 5, 38, 11, 115, 5, 129, 31, 18, 114, 6, -/* 4920 */ 129, 32, 17, 113, 6, 129, 32, 16, 111, 8, -/* 4930 */ 129, 33, 15, 108, 10, 129, 33, 14, 106, 11, -/* 4940 */ 129, 32, 17, 102, 14, 129, 31, 23, 97, 18, -/* 4950 */ 129, 31, 28, 92, 21, 129, 30, 82, 129, 30, -/* 4960 */ 80, 129, 30, 11, 43, 65, 129, 30, 10, 45, -/* 4970 */ 61, 129, 31, 8, 47, 57, 129, 32, 6, 50, -/* 4980 */ 51, 129, 33, 5, 53, 45, 129, 35, 4, 57, -/* 4990 */ 37, 129, 38, 2, 63, 25, 129, 193, 129, 30, -/* 5000 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 76, -/* 5010 */ 8, 117, 4, 129, 30, 4, 73, 11, 117, 4, -/* 5020 */ 129, 30, 4, 70, 14, 117, 4, 129, 30, 4, -/* 5030 */ 67, 17, 117, 4, 129, 65, 19, 117, 4, 129, -/* 5040 */ 62, 22, 117, 4, 129, 59, 25, 117, 4, 129, -/* 5050 */ 56, 28, 117, 4, 129, 53, 31, 117, 4, 129, -/* 5060 */ 50, 34, 117, 4, 129, 47, 29, 80, 5, 116, -/* 5070 */ 5, 129, 30, 4, 45, 29, 80, 5, 116, 5, -/* 5080 */ 129, 30, 4, 42, 29, 80, 5, 116, 5, 129, -/* 5090 */ 30, 4, 39, 30, 80, 6, 115, 6, 129, 30, -/* 5100 */ 4, 36, 30, 80, 6, 115, 6, 129, 30, 33, -/* 5110 */ 81, 6, 114, 6, 129, 30, 30, 81, 8, 112, -/* 5120 */ 8, 129, 30, 27, 81, 9, 111, 9, 129, 30, -/* 5130 */ 25, 82, 10, 109, 10, 129, 30, 22, 82, 13, -/* 5140 */ 106, 13, 129, 30, 19, 83, 35, 129, 30, 16, -/* 5150 */ 84, 33, 129, 30, 13, 85, 31, 129, 30, 11, -/* 5160 */ 86, 29, 129, 30, 8, 88, 25, 129, 30, 5, -/* 5170 */ 90, 21, 129, 30, 4, 93, 15, 129, 30, 4, -/* 5180 */ 96, 9, 129, 30, 4, 130, 193, 129, 30, 18, -/* 5190 */ 130, 30, 18, 89, 15, 129, 30, 18, 85, 23, -/* 5200 */ 129, 34, 11, 83, 27, 129, 34, 9, 81, 31, -/* 5210 */ 129, 33, 8, 79, 35, 129, 33, 6, 78, 16, -/* 5220 */ 106, 9, 129, 32, 6, 77, 15, 109, 7, 129, -/* 5230 */ 32, 5, 76, 14, 111, 6, 129, 31, 5, 75, -/* 5240 */ 14, 113, 5, 129, 31, 4, 74, 15, 114, 5, -/* 5250 */ 129, 31, 4, 74, 14, 115, 4, 129, 30, 4, -/* 5260 */ 73, 15, 116, 4, 129, 30, 4, 73, 14, 116, -/* 5270 */ 4, 129, 30, 4, 73, 14, 117, 4, 129, 30, -/* 5280 */ 4, 72, 15, 117, 4, 130, 30, 4, 71, 15, -/* 5290 */ 117, 4, 130, 30, 4, 70, 15, 117, 4, 129, -/* 5300 */ 30, 5, 70, 15, 117, 4, 129, 30, 5, 69, -/* 5310 */ 15, 116, 5, 129, 30, 6, 68, 16, 115, 5, -/* 5320 */ 129, 31, 6, 67, 16, 114, 6, 129, 31, 7, -/* 5330 */ 66, 17, 113, 6, 129, 32, 7, 64, 18, 111, -/* 5340 */ 8, 129, 32, 8, 62, 19, 109, 9, 129, 33, -/* 5350 */ 9, 60, 20, 107, 10, 129, 34, 11, 57, 22, -/* 5360 */ 103, 13, 129, 35, 43, 103, 18, 129, 36, 41, -/* 5370 */ 103, 18, 129, 38, 38, 103, 18, 129, 39, 35, -/* 5380 */ 103, 18, 129, 41, 31, 129, 43, 27, 129, 46, -/* 5390 */ 22, 129, 49, 14, 129, 193, 129, 103, 18, 132, -/* 5400 */ 110, 11, 129, 113, 8, 129, 114, 7, 129, 116, -/* 5410 */ 5, 130, 117, 4, 132, 30, 4, 117, 4, 132, -/* 5420 */ 30, 91, 137, 30, 4, 117, 4, 132, 117, 4, -/* 5430 */ 132, 116, 5, 130, 114, 7, 129, 113, 8, 129, -/* 5440 */ 110, 11, 129, 103, 18, 132, 193, 129, 117, 4, -/* 5450 */ 132, 56, 65, 129, 50, 71, 129, 46, 75, 129, -/* 5460 */ 44, 77, 129, 42, 79, 129, 40, 81, 129, 38, -/* 5470 */ 83, 129, 36, 85, 129, 35, 86, 129, 34, 20, -/* 5480 */ 117, 4, 129, 33, 17, 117, 4, 129, 32, 15, -/* 5490 */ 117, 4, 129, 32, 13, 117, 4, 129, 31, 12, -/* 5500 */ 129, 31, 10, 129, 31, 9, 129, 30, 9, 129, -/* 5510 */ 30, 8, 130, 30, 7, 132, 31, 6, 130, 31, -/* 5520 */ 7, 129, 32, 6, 129, 32, 7, 129, 33, 7, -/* 5530 */ 129, 34, 7, 129, 35, 8, 129, 36, 9, 117, -/* 5540 */ 4, 129, 38, 9, 117, 4, 129, 40, 10, 117, -/* 5550 */ 4, 129, 42, 12, 117, 4, 129, 44, 77, 129, -/* 5560 */ 46, 75, 129, 50, 71, 129, 56, 43, 100, 21, -/* 5570 */ 129, 117, 4, 132, 193, 129, 117, 4, 132, 115, -/* 5580 */ 6, 129, 110, 11, 129, 105, 16, 129, 101, 20, -/* 5590 */ 129, 96, 25, 129, 92, 29, 129, 87, 34, 129, -/* 5600 */ 83, 38, 129, 78, 43, 129, 74, 47, 129, 70, -/* 5610 */ 42, 117, 4, 129, 65, 42, 117, 4, 129, 60, -/* 5620 */ 43, 117, 4, 129, 56, 42, 129, 51, 42, 129, -/* 5630 */ 46, 43, 129, 42, 43, 129, 37, 44, 129, 33, -/* 5640 */ 43, 129, 30, 42, 129, 33, 34, 129, 38, 25, -/* 5650 */ 129, 42, 16, 129, 47, 15, 129, 52, 15, 129, -/* 5660 */ 57, 15, 129, 61, 16, 129, 66, 16, 129, 71, -/* 5670 */ 16, 129, 76, 16, 129, 80, 16, 129, 85, 16, -/* 5680 */ 117, 4, 129, 90, 16, 117, 4, 129, 95, 16, -/* 5690 */ 117, 4, 129, 100, 21, 129, 105, 16, 129, 110, -/* 5700 */ 11, 129, 114, 7, 129, 117, 4, 132, 193, 129, -/* 5710 */ 117, 4, 132, 115, 6, 129, 110, 11, 129, 105, -/* 5720 */ 16, 129, 101, 20, 129, 96, 25, 129, 92, 29, -/* 5730 */ 129, 87, 34, 129, 83, 38, 129, 78, 43, 129, -/* 5740 */ 74, 47, 129, 70, 42, 117, 4, 129, 65, 42, -/* 5750 */ 117, 4, 129, 60, 43, 117, 4, 129, 56, 42, -/* 5760 */ 129, 51, 42, 129, 46, 43, 129, 42, 43, 129, -/* 5770 */ 37, 44, 129, 33, 43, 129, 30, 42, 129, 33, -/* 5780 */ 34, 129, 38, 25, 129, 42, 16, 129, 47, 15, -/* 5790 */ 129, 52, 15, 129, 57, 15, 129, 61, 16, 129, -/* 5800 */ 65, 17, 129, 60, 27, 129, 56, 36, 129, 51, -/* 5810 */ 42, 129, 46, 43, 129, 42, 43, 129, 37, 44, -/* 5820 */ 129, 33, 43, 129, 30, 42, 129, 33, 34, 129, -/* 5830 */ 38, 25, 129, 42, 16, 129, 47, 15, 129, 52, -/* 5840 */ 15, 129, 57, 15, 129, 61, 16, 129, 66, 16, -/* 5850 */ 129, 71, 16, 129, 76, 16, 129, 80, 16, 129, -/* 5860 */ 85, 16, 117, 4, 129, 90, 16, 117, 4, 129, -/* 5870 */ 95, 16, 117, 4, 129, 100, 21, 129, 105, 16, -/* 5880 */ 129, 110, 11, 129, 114, 7, 129, 117, 4, 132, -/* 5890 */ 193, 129, 30, 4, 117, 4, 132, 30, 4, 115, -/* 5900 */ 6, 129, 30, 4, 112, 9, 129, 30, 6, 109, -/* 5910 */ 12, 129, 30, 9, 106, 15, 129, 30, 11, 103, -/* 5920 */ 18, 129, 30, 14, 100, 21, 129, 30, 4, 38, -/* 5930 */ 9, 98, 23, 129, 30, 4, 40, 10, 95, 26, -/* 5940 */ 129, 30, 4, 43, 9, 92, 29, 129, 46, 9, -/* 5950 */ 89, 32, 129, 49, 8, 86, 28, 117, 4, 129, -/* 5960 */ 51, 9, 83, 28, 117, 4, 129, 54, 9, 80, -/* 5970 */ 28, 117, 4, 129, 57, 8, 77, 28, 117, 4, -/* 5980 */ 129, 59, 9, 74, 28, 129, 62, 37, 129, 64, -/* 5990 */ 33, 129, 66, 28, 129, 63, 28, 129, 60, 28, -/* 6000 */ 129, 57, 28, 129, 54, 33, 129, 51, 39, 129, -/* 6010 */ 48, 29, 83, 9, 129, 30, 4, 45, 29, 86, -/* 6020 */ 9, 129, 30, 4, 42, 29, 89, 9, 129, 30, -/* 6030 */ 4, 39, 29, 92, 8, 129, 30, 4, 36, 29, -/* 6040 */ 94, 9, 129, 30, 32, 97, 9, 129, 30, 29, -/* 6050 */ 100, 8, 117, 4, 129, 30, 26, 103, 8, 117, -/* 6060 */ 4, 129, 30, 23, 105, 9, 117, 4, 129, 30, -/* 6070 */ 20, 108, 13, 129, 30, 18, 111, 10, 129, 30, -/* 6080 */ 15, 113, 8, 129, 30, 12, 116, 5, 129, 30, -/* 6090 */ 9, 117, 4, 129, 30, 6, 117, 4, 129, 30, -/* 6100 */ 4, 117, 4, 132, 193, 129, 117, 4, 132, 114, -/* 6110 */ 7, 129, 111, 10, 129, 108, 13, 129, 105, 16, -/* 6120 */ 129, 102, 19, 129, 100, 21, 129, 96, 25, 129, -/* 6130 */ 93, 28, 129, 90, 31, 129, 87, 34, 129, 84, -/* 6140 */ 30, 117, 4, 129, 30, 4, 81, 30, 117, 4, -/* 6150 */ 129, 30, 4, 78, 30, 117, 4, 129, 30, 4, -/* 6160 */ 75, 30, 117, 4, 129, 30, 4, 72, 30, 129, -/* 6170 */ 30, 69, 129, 30, 66, 129, 30, 63, 129, 30, -/* 6180 */ 60, 129, 30, 57, 129, 30, 54, 129, 30, 51, -/* 6190 */ 129, 30, 48, 129, 30, 51, 129, 30, 4, 73, -/* 6200 */ 12, 129, 30, 4, 76, 12, 129, 30, 4, 80, -/* 6210 */ 12, 129, 30, 4, 83, 12, 129, 87, 12, 129, -/* 6220 */ 90, 12, 117, 4, 129, 94, 11, 117, 4, 129, -/* 6230 */ 97, 12, 117, 4, 129, 101, 12, 117, 4, 129, -/* 6240 */ 104, 17, 129, 108, 13, 129, 111, 10, 129, 115, -/* 6250 */ 6, 129, 117, 4, 134, 193, 129, 30, 1, 103, -/* 6260 */ 18, 129, 30, 4, 103, 18, 129, 30, 7, 103, -/* 6270 */ 18, 129, 30, 9, 103, 18, 129, 30, 12, 110, -/* 6280 */ 11, 129, 30, 15, 113, 8, 129, 30, 18, 114, -/* 6290 */ 7, 129, 30, 21, 116, 5, 129, 30, 24, 116, -/* 6300 */ 5, 129, 30, 27, 117, 4, 129, 30, 30, 117, -/* 6310 */ 4, 129, 30, 33, 117, 4, 129, 30, 4, 37, -/* 6320 */ 28, 117, 4, 129, 30, 4, 40, 28, 117, 4, -/* 6330 */ 129, 30, 4, 42, 29, 117, 4, 129, 30, 4, -/* 6340 */ 45, 29, 117, 4, 129, 30, 4, 48, 29, 117, -/* 6350 */ 4, 129, 30, 4, 51, 29, 117, 4, 129, 30, -/* 6360 */ 4, 54, 29, 117, 4, 129, 30, 4, 57, 29, -/* 6370 */ 117, 4, 129, 30, 4, 59, 30, 117, 4, 129, -/* 6380 */ 30, 4, 62, 30, 117, 4, 129, 30, 4, 65, -/* 6390 */ 30, 117, 4, 129, 30, 4, 68, 30, 117, 4, -/* 6400 */ 129, 30, 4, 71, 30, 117, 4, 129, 30, 4, -/* 6410 */ 74, 30, 117, 4, 129, 30, 4, 77, 30, 117, -/* 6420 */ 4, 129, 30, 4, 80, 30, 117, 4, 129, 30, -/* 6430 */ 4, 83, 30, 117, 4, 129, 30, 4, 86, 35, -/* 6440 */ 129, 30, 4, 89, 32, 129, 30, 4, 91, 30, -/* 6450 */ 129, 30, 4, 94, 27, 129, 30, 5, 97, 24, -/* 6460 */ 129, 30, 5, 100, 21, 129, 30, 7, 103, 18, -/* 6470 */ 129, 30, 8, 106, 15, 129, 30, 11, 109, 12, -/* 6480 */ 129, 30, 18, 112, 9, 129, 30, 18, 115, 6, -/* 6490 */ 129, 30, 18, 117, 4, 129, 30, 18, 120, 1, -/* 6500 */ 129, 193, 129, 42, 8, 129, 38, 16, 129, 36, -/* 6510 */ 20, 129, 34, 24, 71, 5, 129, 33, 26, 69, -/* 6520 */ 10, 129, 32, 28, 68, 13, 129, 31, 30, 68, -/* 6530 */ 14, 129, 31, 9, 52, 9, 68, 15, 129, 30, -/* 6540 */ 8, 54, 8, 69, 14, 129, 30, 7, 55, 7, -/* 6550 */ 71, 4, 78, 6, 129, 30, 6, 56, 6, 79, -/* 6560 */ 5, 129, 30, 6, 56, 6, 80, 4, 130, 31, -/* 6570 */ 5, 56, 5, 80, 4, 129, 31, 5, 56, 5, -/* 6580 */ 79, 5, 129, 32, 5, 55, 5, 78, 6, 129, -/* 6590 */ 33, 5, 54, 5, 77, 7, 129, 34, 6, 52, -/* 6600 */ 6, 74, 9, 129, 35, 48, 129, 33, 49, 129, -/* 6610 */ 32, 49, 129, 31, 49, 129, 30, 49, 129, 30, -/* 6620 */ 47, 129, 30, 45, 129, 30, 41, 129, 30, 6, -/* 6630 */ 129, 30, 4, 129, 30, 3, 129, 30, 2, 129, -/* 6640 */ 193, 129, 30, 4, 117, 4, 130, 31, 90, 136, -/* 6650 */ 37, 5, 72, 5, 129, 35, 5, 74, 5, 129, -/* 6660 */ 33, 5, 76, 5, 129, 32, 5, 77, 5, 129, -/* 6670 */ 31, 5, 78, 5, 129, 31, 4, 79, 4, 129, -/* 6680 */ 30, 5, 79, 5, 131, 30, 6, 78, 6, 129, -/* 6690 */ 30, 7, 77, 7, 129, 31, 8, 75, 8, 129, -/* 6700 */ 31, 11, 72, 11, 129, 32, 15, 67, 15, 129, -/* 6710 */ 33, 48, 129, 34, 46, 129, 35, 44, 129, 37, -/* 6720 */ 40, 129, 39, 36, 129, 42, 30, 129, 46, 22, -/* 6730 */ 129, 193, 129, 48, 18, 129, 43, 28, 129, 41, -/* 6740 */ 32, 129, 39, 36, 129, 37, 40, 129, 35, 44, -/* 6750 */ 129, 34, 46, 129, 33, 13, 68, 13, 129, 32, -/* 6760 */ 9, 73, 9, 129, 32, 7, 75, 7, 129, 31, -/* 6770 */ 6, 77, 6, 129, 31, 5, 78, 5, 129, 30, -/* 6780 */ 5, 79, 5, 129, 30, 4, 80, 4, 133, 31, -/* 6790 */ 3, 79, 4, 129, 31, 4, 79, 4, 129, 32, -/* 6800 */ 3, 78, 4, 129, 32, 4, 76, 6, 129, 33, -/* 6810 */ 4, 74, 7, 129, 34, 4, 72, 8, 129, 35, -/* 6820 */ 5, 72, 7, 129, 37, 5, 73, 4, 129, 39, -/* 6830 */ 4, 74, 1, 129, 129, 193, 129, 46, 22, 129, -/* 6840 */ 42, 30, 129, 39, 36, 129, 37, 40, 129, 35, -/* 6850 */ 44, 129, 34, 46, 129, 33, 48, 129, 32, 15, -/* 6860 */ 67, 15, 129, 31, 11, 72, 11, 129, 31, 8, -/* 6870 */ 75, 8, 129, 30, 7, 77, 7, 129, 30, 6, -/* 6880 */ 78, 6, 129, 30, 5, 79, 5, 131, 31, 4, -/* 6890 */ 79, 4, 129, 31, 5, 78, 5, 129, 32, 5, -/* 6900 */ 77, 5, 129, 33, 5, 76, 5, 129, 35, 5, -/* 6910 */ 74, 5, 117, 4, 129, 37, 5, 72, 5, 117, -/* 6920 */ 4, 129, 30, 91, 136, 30, 4, 130, 193, 129, -/* 6930 */ 48, 18, 129, 43, 28, 129, 41, 32, 129, 39, -/* 6940 */ 36, 129, 37, 40, 129, 35, 44, 129, 34, 46, -/* 6950 */ 129, 33, 13, 55, 4, 68, 13, 129, 32, 9, -/* 6960 */ 55, 4, 73, 9, 129, 32, 7, 55, 4, 75, -/* 6970 */ 7, 129, 31, 6, 55, 4, 77, 6, 129, 31, -/* 6980 */ 5, 55, 4, 78, 5, 129, 30, 5, 55, 4, -/* 6990 */ 79, 5, 129, 30, 4, 55, 4, 80, 4, 132, -/* 7000 */ 30, 4, 55, 4, 79, 5, 129, 31, 3, 55, -/* 7010 */ 4, 78, 5, 129, 31, 4, 55, 4, 77, 6, -/* 7020 */ 129, 32, 3, 55, 4, 75, 7, 129, 32, 4, -/* 7030 */ 55, 4, 73, 9, 129, 33, 4, 55, 4, 68, -/* 7040 */ 13, 129, 34, 4, 55, 25, 129, 35, 5, 55, -/* 7050 */ 24, 129, 37, 5, 55, 22, 129, 39, 4, 55, -/* 7060 */ 20, 129, 55, 18, 129, 55, 16, 129, 55, 11, -/* 7070 */ 129, 193, 129, 80, 4, 129, 30, 4, 80, 4, -/* 7080 */ 130, 30, 78, 129, 30, 82, 129, 30, 85, 129, -/* 7090 */ 30, 87, 129, 30, 88, 129, 30, 89, 129, 30, -/* 7100 */ 90, 130, 30, 4, 80, 4, 115, 6, 129, 30, -/* 7110 */ 4, 80, 4, 117, 4, 129, 80, 4, 105, 6, -/* 7120 */ 117, 4, 129, 80, 4, 103, 10, 116, 5, 129, -/* 7130 */ 80, 4, 102, 19, 129, 80, 4, 101, 19, 129, -/* 7140 */ 101, 19, 129, 101, 18, 129, 102, 16, 129, 103, -/* 7150 */ 12, 129, 105, 6, 129, 193, 129, 12, 10, 59, -/* 7160 */ 11, 129, 9, 16, 55, 19, 129, 7, 20, 53, -/* 7170 */ 23, 129, 6, 7, 23, 5, 32, 6, 51, 27, -/* 7180 */ 129, 4, 7, 25, 16, 50, 29, 129, 3, 6, -/* 7190 */ 27, 16, 49, 31, 129, 2, 6, 28, 16, 48, -/* 7200 */ 33, 129, 1, 6, 27, 18, 47, 35, 129, 1, -/* 7210 */ 6, 27, 31, 71, 12, 129, 1, 5, 26, 15, -/* 7220 */ 44, 10, 75, 8, 129, 1, 5, 25, 14, 45, -/* 7230 */ 7, 77, 7, 129, 1, 5, 25, 13, 45, 5, -/* 7240 */ 79, 5, 129, 1, 5, 24, 14, 45, 4, 80, -/* 7250 */ 4, 129, 1, 5, 24, 13, 45, 4, 80, 4, -/* 7260 */ 129, 1, 5, 23, 14, 45, 4, 80, 4, 129, -/* 7270 */ 1, 5, 23, 13, 45, 4, 80, 4, 129, 1, -/* 7280 */ 6, 22, 13, 45, 5, 79, 5, 129, 1, 6, -/* 7290 */ 21, 14, 45, 7, 77, 7, 129, 1, 7, 21, -/* 7300 */ 13, 46, 8, 75, 8, 129, 1, 8, 20, 13, -/* 7310 */ 46, 12, 71, 12, 129, 1, 10, 18, 15, 47, -/* 7320 */ 35, 129, 2, 30, 48, 33, 129, 3, 29, 49, -/* 7330 */ 32, 129, 4, 27, 50, 31, 129, 5, 25, 51, -/* 7340 */ 27, 80, 2, 86, 4, 129, 7, 21, 53, 23, -/* 7350 */ 80, 3, 85, 6, 129, 9, 17, 55, 19, 80, -/* 7360 */ 12, 129, 12, 12, 59, 11, 81, 11, 129, 82, -/* 7370 */ 10, 129, 84, 7, 129, 86, 4, 129, 193, 129, -/* 7380 */ 30, 4, 117, 4, 130, 30, 91, 136, 30, 4, -/* 7390 */ 72, 5, 129, 30, 4, 74, 5, 129, 75, 5, -/* 7400 */ 129, 76, 5, 129, 76, 6, 129, 77, 6, 130, -/* 7410 */ 77, 7, 130, 76, 8, 129, 30, 4, 75, 9, -/* 7420 */ 129, 30, 4, 72, 12, 129, 30, 54, 129, 30, -/* 7430 */ 53, 130, 30, 52, 129, 30, 51, 129, 30, 49, -/* 7440 */ 129, 30, 46, 129, 30, 42, 129, 30, 4, 130, -/* 7450 */ 193, 129, 30, 4, 80, 4, 129, 30, 4, 80, -/* 7460 */ 4, 100, 6, 129, 30, 54, 98, 10, 129, 30, -/* 7470 */ 54, 97, 12, 129, 30, 54, 96, 14, 131, 30, -/* 7480 */ 54, 97, 12, 129, 30, 54, 98, 10, 129, 30, -/* 7490 */ 54, 100, 6, 129, 30, 4, 130, 193, 129, 7, -/* 7500 */ 6, 129, 4, 11, 129, 3, 13, 129, 2, 14, -/* 7510 */ 129, 1, 15, 130, 1, 3, 6, 9, 129, 1, -/* 7520 */ 3, 7, 6, 129, 1, 3, 130, 1, 4, 129, -/* 7530 */ 1, 5, 80, 4, 129, 1, 7, 80, 4, 100, -/* 7540 */ 6, 129, 2, 82, 98, 10, 129, 3, 81, 97, -/* 7550 */ 12, 129, 4, 80, 96, 14, 129, 5, 79, 96, -/* 7560 */ 14, 129, 7, 77, 96, 14, 129, 10, 74, 97, -/* 7570 */ 12, 129, 14, 70, 98, 10, 129, 19, 65, 100, -/* 7580 */ 6, 129, 193, 129, 30, 4, 117, 4, 130, 30, -/* 7590 */ 91, 136, 30, 4, 57, 9, 129, 30, 4, 55, -/* 7600 */ 12, 129, 52, 17, 129, 50, 20, 129, 48, 24, -/* 7610 */ 129, 46, 27, 129, 44, 21, 69, 6, 129, 41, -/* 7620 */ 22, 70, 6, 80, 4, 129, 30, 4, 39, 21, -/* 7630 */ 72, 6, 80, 4, 129, 30, 4, 36, 22, 73, -/* 7640 */ 11, 129, 30, 26, 75, 9, 129, 30, 23, 76, -/* 7650 */ 8, 129, 30, 21, 78, 6, 129, 30, 19, 79, -/* 7660 */ 5, 129, 30, 16, 80, 4, 129, 30, 14, 80, -/* 7670 */ 4, 129, 30, 12, 129, 30, 10, 129, 30, 7, -/* 7680 */ 129, 30, 5, 129, 30, 4, 130, 193, 129, 30, -/* 7690 */ 4, 117, 4, 130, 30, 91, 136, 30, 4, 130, -/* 7700 */ 193, 129, 30, 4, 80, 4, 130, 30, 54, 136, -/* 7710 */ 30, 4, 72, 5, 129, 30, 4, 74, 5, 129, -/* 7720 */ 75, 5, 129, 76, 5, 129, 30, 4, 75, 7, -/* 7730 */ 129, 30, 4, 74, 9, 129, 30, 54, 132, 30, -/* 7740 */ 53, 129, 30, 52, 129, 30, 51, 129, 30, 48, -/* 7750 */ 129, 30, 4, 72, 5, 129, 30, 4, 74, 5, -/* 7760 */ 129, 75, 5, 129, 76, 5, 129, 30, 4, 75, -/* 7770 */ 7, 129, 30, 4, 74, 9, 129, 30, 54, 132, -/* 7780 */ 30, 53, 129, 30, 52, 129, 30, 51, 129, 30, -/* 7790 */ 48, 129, 30, 4, 130, 193, 129, 30, 4, 80, -/* 7800 */ 4, 130, 30, 54, 136, 30, 4, 72, 5, 129, -/* 7810 */ 30, 4, 74, 5, 129, 75, 5, 129, 76, 5, -/* 7820 */ 129, 76, 6, 129, 77, 6, 130, 77, 7, 130, -/* 7830 */ 76, 8, 129, 30, 4, 75, 9, 129, 30, 4, -/* 7840 */ 72, 12, 129, 30, 54, 129, 30, 53, 130, 30, -/* 7850 */ 52, 129, 30, 51, 129, 30, 49, 129, 30, 46, -/* 7860 */ 129, 30, 42, 129, 30, 4, 130, 193, 129, 48, -/* 7870 */ 18, 129, 43, 28, 129, 41, 32, 129, 39, 36, -/* 7880 */ 129, 37, 40, 129, 35, 44, 129, 34, 46, 129, -/* 7890 */ 33, 13, 68, 13, 129, 32, 9, 73, 9, 129, -/* 7900 */ 32, 7, 75, 7, 129, 31, 6, 77, 6, 129, -/* 7910 */ 31, 5, 78, 5, 129, 30, 5, 79, 5, 129, -/* 7920 */ 30, 4, 80, 4, 132, 30, 5, 79, 5, 130, -/* 7930 */ 31, 5, 78, 5, 129, 31, 6, 77, 6, 129, -/* 7940 */ 32, 7, 75, 7, 129, 32, 9, 73, 9, 129, -/* 7950 */ 33, 13, 68, 13, 129, 34, 46, 129, 35, 44, -/* 7960 */ 129, 37, 40, 129, 39, 36, 129, 41, 32, 129, -/* 7970 */ 43, 28, 129, 48, 18, 129, 193, 129, 1, 3, -/* 7980 */ 80, 4, 130, 1, 83, 137, 37, 5, 72, 5, -/* 7990 */ 129, 35, 5, 74, 5, 129, 33, 5, 76, 5, -/* 8000 */ 129, 32, 5, 77, 5, 129, 31, 5, 78, 5, -/* 8010 */ 129, 31, 4, 79, 4, 129, 30, 5, 79, 5, -/* 8020 */ 131, 30, 6, 78, 6, 129, 30, 7, 77, 7, -/* 8030 */ 129, 31, 8, 75, 8, 129, 31, 11, 72, 11, -/* 8040 */ 129, 32, 15, 67, 15, 129, 33, 48, 129, 34, -/* 8050 */ 46, 129, 35, 44, 129, 37, 40, 129, 39, 36, -/* 8060 */ 129, 42, 30, 129, 46, 22, 129, 193, 129, 46, -/* 8070 */ 22, 129, 42, 30, 129, 39, 36, 129, 37, 40, -/* 8080 */ 129, 35, 44, 129, 34, 46, 129, 33, 48, 129, -/* 8090 */ 32, 15, 67, 15, 129, 31, 11, 72, 11, 129, -/* 8100 */ 31, 8, 75, 8, 129, 30, 7, 77, 7, 129, -/* 8110 */ 30, 6, 78, 6, 129, 30, 5, 79, 5, 131, -/* 8120 */ 31, 4, 79, 4, 129, 31, 5, 78, 5, 129, -/* 8130 */ 32, 5, 77, 5, 129, 33, 5, 76, 5, 129, -/* 8140 */ 35, 5, 74, 5, 129, 37, 5, 72, 5, 129, -/* 8150 */ 1, 83, 136, 1, 3, 80, 4, 130, 193, 129, -/* 8160 */ 30, 4, 80, 4, 130, 30, 54, 136, 30, 4, -/* 8170 */ 68, 6, 129, 30, 4, 70, 6, 129, 71, 7, -/* 8180 */ 129, 72, 7, 129, 73, 7, 129, 74, 7, 129, -/* 8190 */ 74, 8, 129, 75, 8, 130, 69, 15, 129, 67, -/* 8200 */ 17, 129, 66, 18, 129, 65, 19, 130, 65, 18, -/* 8210 */ 130, 66, 16, 129, 67, 13, 129, 69, 8, 129, -/* 8220 */ 193, 129, 30, 13, 64, 8, 129, 30, 13, 61, -/* 8230 */ 14, 129, 30, 13, 59, 18, 129, 30, 13, 57, -/* 8240 */ 22, 129, 33, 8, 56, 24, 129, 32, 7, 55, -/* 8250 */ 26, 129, 32, 6, 54, 28, 129, 31, 6, 53, -/* 8260 */ 16, 77, 6, 129, 31, 5, 53, 14, 79, 4, -/* 8270 */ 129, 30, 5, 52, 14, 80, 4, 129, 30, 5, -/* 8280 */ 52, 13, 80, 4, 129, 30, 4, 52, 13, 80, -/* 8290 */ 4, 129, 30, 4, 52, 12, 80, 4, 129, 30, -/* 8300 */ 4, 51, 13, 80, 4, 130, 30, 4, 50, 13, -/* 8310 */ 79, 5, 129, 30, 4, 50, 13, 78, 5, 129, -/* 8320 */ 30, 5, 49, 14, 77, 6, 129, 31, 4, 49, -/* 8330 */ 13, 76, 6, 129, 31, 5, 48, 14, 75, 7, -/* 8340 */ 129, 32, 5, 47, 14, 73, 8, 129, 32, 6, -/* 8350 */ 45, 16, 71, 13, 129, 33, 27, 71, 13, 129, -/* 8360 */ 34, 26, 71, 13, 129, 35, 24, 71, 13, 129, -/* 8370 */ 37, 20, 129, 39, 16, 129, 43, 9, 129, 193, -/* 8380 */ 129, 80, 4, 131, 41, 56, 129, 37, 60, 129, -/* 8390 */ 35, 62, 129, 33, 64, 129, 32, 65, 129, 31, -/* 8400 */ 66, 129, 30, 67, 130, 30, 11, 80, 4, 129, -/* 8410 */ 30, 9, 80, 4, 129, 30, 8, 80, 4, 129, -/* 8420 */ 31, 7, 80, 4, 129, 31, 6, 129, 32, 5, -/* 8430 */ 129, 33, 5, 129, 35, 4, 129, 38, 3, 129, -/* 8440 */ 193, 129, 80, 4, 130, 42, 42, 129, 38, 46, -/* 8450 */ 129, 35, 49, 129, 33, 51, 129, 32, 52, 129, -/* 8460 */ 31, 53, 130, 30, 54, 129, 30, 12, 129, 30, -/* 8470 */ 9, 129, 30, 8, 129, 30, 7, 130, 31, 6, -/* 8480 */ 130, 32, 6, 129, 33, 5, 129, 34, 5, 129, -/* 8490 */ 35, 5, 80, 4, 129, 37, 5, 80, 4, 129, -/* 8500 */ 30, 54, 136, 30, 4, 130, 193, 129, 80, 4, -/* 8510 */ 130, 77, 7, 129, 74, 10, 129, 70, 14, 129, -/* 8520 */ 66, 18, 129, 62, 22, 129, 59, 25, 129, 55, -/* 8530 */ 29, 129, 51, 33, 129, 47, 37, 129, 44, 32, -/* 8540 */ 80, 4, 129, 40, 32, 80, 4, 129, 36, 32, -/* 8550 */ 129, 32, 33, 129, 30, 31, 129, 33, 24, 129, -/* 8560 */ 36, 17, 129, 40, 12, 129, 44, 12, 129, 48, -/* 8570 */ 12, 129, 51, 13, 129, 55, 13, 129, 59, 13, -/* 8580 */ 80, 4, 129, 63, 13, 80, 4, 129, 67, 17, -/* 8590 */ 129, 71, 13, 129, 74, 10, 129, 78, 6, 129, -/* 8600 */ 80, 4, 131, 193, 129, 80, 4, 130, 77, 7, -/* 8610 */ 129, 74, 10, 129, 70, 14, 129, 66, 18, 129, -/* 8620 */ 62, 22, 129, 59, 25, 129, 55, 29, 129, 51, -/* 8630 */ 33, 129, 47, 37, 129, 44, 32, 80, 4, 129, -/* 8640 */ 40, 32, 80, 4, 129, 36, 32, 129, 32, 33, -/* 8650 */ 129, 30, 31, 129, 33, 24, 129, 36, 17, 129, -/* 8660 */ 40, 12, 129, 44, 12, 129, 47, 13, 129, 44, -/* 8670 */ 20, 129, 40, 28, 129, 36, 31, 129, 32, 32, -/* 8680 */ 129, 30, 30, 129, 33, 24, 129, 36, 17, 129, -/* 8690 */ 40, 12, 129, 44, 12, 129, 48, 12, 129, 51, -/* 8700 */ 13, 129, 55, 13, 129, 59, 13, 80, 4, 129, -/* 8710 */ 63, 13, 80, 4, 129, 67, 17, 129, 71, 13, -/* 8720 */ 129, 74, 10, 129, 78, 6, 129, 80, 4, 131, -/* 8730 */ 193, 129, 30, 4, 80, 4, 130, 30, 4, 79, -/* 8740 */ 5, 129, 30, 5, 77, 7, 129, 30, 6, 74, -/* 8750 */ 10, 129, 30, 8, 72, 12, 129, 30, 11, 69, -/* 8760 */ 15, 129, 30, 13, 67, 17, 129, 30, 4, 37, -/* 8770 */ 8, 64, 20, 129, 30, 4, 39, 8, 62, 22, -/* 8780 */ 129, 41, 8, 59, 25, 129, 43, 8, 57, 27, -/* 8790 */ 129, 45, 8, 55, 22, 80, 4, 129, 47, 27, -/* 8800 */ 80, 4, 129, 49, 23, 129, 47, 22, 129, 44, -/* 8810 */ 23, 129, 42, 22, 129, 30, 4, 39, 27, 129, -/* 8820 */ 30, 4, 37, 31, 129, 30, 27, 62, 8, 129, -/* 8830 */ 30, 25, 64, 8, 129, 30, 22, 66, 8, 80, -/* 8840 */ 4, 129, 30, 20, 68, 8, 80, 4, 129, 30, -/* 8850 */ 17, 70, 8, 80, 4, 129, 30, 15, 73, 11, -/* 8860 */ 129, 30, 12, 75, 9, 129, 30, 10, 77, 7, -/* 8870 */ 129, 30, 7, 79, 5, 129, 30, 5, 80, 4, -/* 8880 */ 129, 30, 4, 80, 4, 130, 193, 129, 4, 5, -/* 8890 */ 80, 4, 129, 2, 9, 80, 4, 129, 1, 11, -/* 8900 */ 77, 7, 129, 1, 12, 74, 10, 129, 1, 12, -/* 8910 */ 70, 14, 129, 1, 12, 66, 18, 129, 1, 11, -/* 8920 */ 62, 22, 129, 2, 9, 59, 25, 129, 4, 11, -/* 8930 */ 55, 29, 129, 7, 12, 51, 33, 129, 10, 12, -/* 8940 */ 47, 37, 129, 14, 12, 44, 32, 80, 4, 129, -/* 8950 */ 17, 13, 40, 32, 80, 4, 129, 21, 13, 36, -/* 8960 */ 32, 129, 25, 40, 129, 29, 32, 129, 33, 24, -/* 8970 */ 129, 36, 17, 129, 40, 12, 129, 44, 12, 129, -/* 8980 */ 48, 12, 129, 51, 13, 129, 55, 13, 129, 59, -/* 8990 */ 13, 80, 4, 129, 63, 13, 80, 4, 129, 67, -/* 9000 */ 17, 129, 71, 13, 129, 74, 10, 129, 78, 6, -/* 9010 */ 129, 80, 4, 131, 193, 129, 30, 1, 71, 13, -/* 9020 */ 129, 30, 3, 71, 13, 129, 30, 6, 71, 13, -/* 9030 */ 129, 30, 9, 75, 9, 129, 30, 11, 77, 7, -/* 9040 */ 129, 30, 14, 79, 5, 129, 30, 17, 79, 5, -/* 9050 */ 129, 30, 19, 80, 4, 129, 30, 22, 80, 4, -/* 9060 */ 129, 30, 25, 80, 4, 129, 30, 27, 80, 4, -/* 9070 */ 129, 30, 4, 36, 24, 80, 4, 129, 30, 4, -/* 9080 */ 38, 25, 80, 4, 129, 30, 4, 41, 24, 80, -/* 9090 */ 4, 129, 30, 4, 44, 24, 80, 4, 129, 30, -/* 9100 */ 4, 46, 25, 80, 4, 129, 30, 4, 49, 25, -/* 9110 */ 80, 4, 129, 30, 4, 52, 24, 80, 4, 129, -/* 9120 */ 30, 4, 54, 30, 129, 30, 4, 57, 27, 129, -/* 9130 */ 30, 4, 59, 25, 129, 30, 4, 62, 22, 129, -/* 9140 */ 30, 4, 65, 19, 129, 30, 5, 67, 17, 129, -/* 9150 */ 30, 5, 70, 14, 129, 30, 7, 73, 11, 129, -/* 9160 */ 30, 9, 76, 8, 129, 30, 13, 78, 6, 129, -/* 9170 */ 30, 13, 81, 3, 129, 30, 13, 129, 193, 2, -/* 9180 */ 9, 59, 25, 129, 4, 11, 55, 29, 129, 7, -/* 9190 */ 12, 51, 33, 129, 10, 12, 47, 37, 129, 14, -/* 9200 */ 12, 44, 32, 80, 4, 129, 17, 13, 40, 32, -/* 9210 */ 80, 4, 129, 21, 13, 36, 32, 129, 25, 40, -/* 9220 */ 129, 29, 32, 129, 33, 24, 129, 36, 17, 129, -/* 9230 */ 40, 12, 129, 44, 12, 129, 48, 12, 129, 51, -/* 9240 */ 13, 129, 55, 13, 129, 59, 13, 80, 4, 129, -/* 9250 */ 63, 13, 80, 4, 129, 67, 17, 129, 71, 13, -/* 9260 */ 129, 74, 10, 129, 78, 6, 129, 80, 4, 131, -/* 9270 */ 193 -}; - -char line[DWIDTH]; -char message[MAXMSG]; -char print[DWIDTH]; -int debug, i, j, linen, max, nchars, pc, term, trace, x, y; -int width = DWIDTH; /* -w option: scrunch letters to 80 columns */ - -int -main(int argc, char **argv) { - int ch; - extern char *__progname; - __progname = argv[0]; - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - - while ((ch = getopt(argc, argv, "w:td")) != EOF) - switch(ch) { - case 'w': - width = atoi(optarg); - if (width <= 0) - width = 80; - break; - case 'd': - debug = 1; - break; - case 't': - trace = 1; - break; - case '?': - default: - fprintf(stderr, _("usage: banner [-w width]\n")); - exit(1); - } - argc -= optind; - argv += optind; - - for (i = 0; i < width; i++) { - j = i * 132 / width; - print[j] = 1; - } - - /* Have now read in the data. Next get the message to be printed. */ - if (*argv) { - strcpy(message, *argv); - while (*++argv) { - strcat(message, " "); - strcat(message, *argv); - } - nchars = strlen(message); - } else { - fprintf(stderr,_("Message: ")); - (void)fgets(message, sizeof(message), stdin); - nchars = strlen(message); - message[nchars--] = '\0'; /* get rid of newline */ - } - - /* some debugging print statements */ - if (debug) { - printf("int asc_ptr[128] = {\n"); - for (i = 0; i < 128; i++) { - printf("%4d, ",asc_ptr[i]); - if ((i+1) % 8 == 0) - printf("\n"); - } - printf("};\nchar data_table[NBYTES] = {\n"); - printf(" /* "); - for (i = 0; i < 10; i++) printf(" %3d ",i); - printf(" */\n"); - for (i = 0; i < NBYTES; i += 10) { - printf("/* %4d */ ",i); - for (j = i; j < i+10; j++) { - x = data_table[j] & 0377; - printf(" %3d, ",x); - } - putchar('\n'); - } - printf("};\n"); - } - - /* check message to make sure it's legal */ - j = 0; - for (i = 0; i < nchars; i++) - if ((u_char) message[i] >= NCHARS || - asc_ptr[(u_char) message[i]] == 0) { - warnx(_("The character '%c' is not in my character set"), - message[i]); - j++; - } - if (j) - exit(1); - - if (trace) - printf(_("Message '%s' is OK\n"),message); - /* Now have message. Print it one character at a time. */ - - for (i = 0; i < nchars; i++) { - if (trace) - printf("Char #%d: %c\n", i, message[i]); - for (j = 0; j < DWIDTH; j++) line[j] = ' '; - pc = asc_ptr[(u_char) message[i]]; - term = 0; - max = 0; - linen = 0; - while (!term) { - if (pc < 0 || pc > NBYTES) { - printf("bad pc: %d\n",pc); - exit(1); - } - x = data_table[pc] & 0377; - if (trace) - printf("pc=%d, term=%d, max=%d, linen=%d, x=%d\n",pc,term,max,linen,x); - if (x >= 128) { - if (x>192) term++; - x = x & 63; - while (x--) { - if (print[linen++]) { - for (j=0; j <= max; j++) - if (print[j]) - putchar(line[j]); - putchar('\n'); - } - } - for (j = 0; j < DWIDTH; j++) line[j] = ' '; - pc++; - } - else { - y = data_table[pc+1]; - /* compensate for narrow teminals */ -#ifdef notdef - x = (x*width + (DWIDTH/2)) / DWIDTH; - y = (y*width + (DWIDTH/2)) / DWIDTH; -#endif - max = x+y; - while (x < max) line[x++] = '#'; - pc += 2; - if (trace) - printf("x=%d, y=%d, max=%d\n",x,y,max); - } - } - } - - exit(0); -} diff --git a/hwclock/hwclock.c b/hwclock/hwclock.c index ba6bc77c9..154ba0b83 100644 --- a/hwclock/hwclock.c +++ b/hwclock/hwclock.c @@ -293,7 +293,8 @@ read_adjtime(struct adjtime *adjtime_p, int *rc_p) { else { adjtime_p->local_utc = UNKNOWN; if (line3[0]) { - fprintf(stderr, _("%s: Warning: unrecognized third line in adjtime file\n"), + fprintf(stderr, + _("%s: Warning: unrecognized third line in adjtime file\n"), MYNAME); fprintf(stderr, _("(Expected: `UTC' or `LOCAL' or nothing.)\n")); } @@ -564,64 +565,80 @@ interpret_date_string(const char *date_opt, time_t * const time_p) { 10 and arbitrary *time_p. Otherwise, return code is 0 and *time_p is valid. ----------------------------------------------------------------------------*/ - FILE *date_child_fp; - char date_resp[100]; - const char magic[]="seconds-into-epoch="; - char date_command[100]; - int retcode; /* our eventual return code */ - int rc; /* local return code */ + FILE *date_child_fp; + char date_resp[100]; + const char magic[]="seconds-into-epoch="; + char date_command[100]; + int retcode; /* our eventual return code */ + int rc; /* local return code */ + + if (date_opt == NULL) { + fprintf(stderr, _("No --date option specified.\n")); + return 14; + } - if (date_opt == NULL) { - fprintf(stderr, _("No --date option specified.\n")); - retcode = 14; - } else if (strchr(date_opt, '"') != NULL) { - /* Quotation marks in date_opt would ruin the date command we construct. - */ - fprintf(stderr, _("The value of the --date option is not a valid date.\n" - "In particular, it contains quotation marks.\n")); - retcode = 12; - } else { - sprintf(date_command, "date --date=\"%s\" +seconds-into-epoch=%%s", - date_opt); - if (debug) printf(_("Issuing date command: %s\n"), date_command); - - date_child_fp = popen(date_command, "r"); - if (date_child_fp == NULL) { - outsyserr(_("Unable to run 'date' program in /bin/sh shell. " - "popen() failed")); - retcode = 10; - } else { - date_resp[0] = '\0'; /* in case fgets fails */ - fgets(date_resp, sizeof(date_resp), date_child_fp); - if (debug) printf(_("response from date command = %s\n"), date_resp); - if (strncmp(date_resp, magic, sizeof(magic)-1) != 0) { - fprintf(stderr, _("The date command issued by %s returned " - "unexpected results.\n" - "The command was:\n %s\nThe response was:\n %s\n"), - MYNAME, date_command, date_resp); - retcode = 8; - } else { - long seconds_since_epoch; - rc = sscanf(date_resp + sizeof(magic)-1, "%ld", &seconds_since_epoch); - if (rc < 1) { - fprintf(stderr, _("The date command issued by %s returned " - "something other than an integer where the converted " - "time value was expected.\n" - "The command was:\n %s\nThe response was:\n %s\n"), - MYNAME, date_command, date_resp); - retcode = 6; - } else { - retcode = 0; - *time_p = seconds_since_epoch; - if (debug) - printf(_("date string %s equates to %ld seconds since 1969.\n"), - date_opt, (long) *time_p); - } - } - fclose(date_child_fp); - } - } - return(retcode); + /* prevent overflow - a security risk */ + if (strlen(date_opt) > sizeof(date_command) - 50) { + fprintf(stderr, _("--date argument too long\n")); + return 13; + } + + /* Quotes in date_opt would ruin the date command we construct. */ + if (strchr(date_opt, '"') != NULL) { + fprintf(stderr, + _("The value of the --date option is not a valid date.\n" + "In particular, it contains quotation marks.\n")); + return 12; + } + + sprintf(date_command, "date --date=\"%s\" +seconds-into-epoch=%%s", + date_opt); + if (debug) + printf(_("Issuing date command: %s\n"), date_command); + + date_child_fp = popen(date_command, "r"); + if (date_child_fp == NULL) { + outsyserr(_("Unable to run 'date' program in /bin/sh shell. " + "popen() failed")); + return 10; + } + + date_resp[0] = '\0'; /* in case fgets fails */ + fgets(date_resp, sizeof(date_resp), date_child_fp); + if (debug) + printf(_("response from date command = %s\n"), date_resp); + if (strncmp(date_resp, magic, sizeof(magic)-1) != 0) { + fprintf(stderr, _("The date command issued by %s returned " + "unexpected results.\n" + "The command was:\n %s\n" + "The response was:\n %s\n"), + MYNAME, date_command, date_resp); + retcode = 8; + } else { + long seconds_since_epoch; + rc = sscanf(date_resp + sizeof(magic)-1, "%ld", + &seconds_since_epoch); + if (rc < 1) { + fprintf(stderr, + _("The date command issued by %s returned " + "something other than an integer where the " + "converted time value was expected.\n" + "The command was:\n %s\n" + "The response was:\n %s\n"), + MYNAME, date_command, date_resp); + retcode = 6; + } else { + retcode = 0; + *time_p = seconds_since_epoch; + if (debug) + printf(_("date string %s equates to " + "%ld seconds since 1969.\n"), + date_opt, (long) *time_p); + } + } + fclose(date_child_fp); + + return(retcode); } diff --git a/lib/xstrncpy.c b/lib/xstrncpy.c index cf4940971..79754261c 100644 --- a/lib/xstrncpy.c +++ b/lib/xstrncpy.c @@ -2,6 +2,7 @@ #include #include "xstrncpy.h" +/* caller guarantees n > 0 */ void xstrncpy(char *dest, const char *src, size_t n) { strncpy(dest, src, n-1); diff --git a/login-utils/Makefile b/login-utils/Makefile index dc96f8780..13191a4a2 100644 --- a/login-utils/Makefile +++ b/login-utils/Makefile @@ -95,7 +95,7 @@ agetty.o islocal.o last.o setpwnam.o shutdown.o simpleinit.o \ shutdown.o simpleinit.o: $(LIB)/linux_reboot.h wall.o: ttymsg.h $(LIB)/carefulputc.h -agetty: agetty.o +agetty: agetty.o $(LIB)/xstrncpy.o chfn: chfn.o islocal.o setpwnam.o $(LIB)/env.o $(LIB)/xstrncpy.o $(CC) $(LDFLAGS) -o $@ $^ $(CRYPT) $(PAM) chsh: chsh.o islocal.o setpwnam.o $(LIB)/env.o diff --git a/login-utils/agetty.c b/login-utils/agetty.c index c7f0f3d26..d53811b2a 100644 --- a/login-utils/agetty.c +++ b/login-utils/agetty.c @@ -30,6 +30,7 @@ #include #include #include +#include "xstrncpy.h" #include "nls.h" #ifdef __linux__ @@ -273,9 +274,14 @@ main(argc, argv) /* The BSD-style init command passes us a useless process name. */ #ifdef SYSV_STYLE - progname = argv[0]; + { + char *ptr; + progname = argv[0]; + if ((ptr = strrchr(argv[0], '/'))) + progname = ++ptr; + } #else - progname = "agetty"; + progname = "agetty"; #endif #ifdef DEBUGGING @@ -1220,13 +1226,13 @@ error(const char *fmt, ...) { */ va_start(ap, fmt); - while (*fmt) { + while (*fmt && bp < &buf[BUFSIZ-1]) { if (strncmp(fmt, "%s", 2) == 0) { - (void) strcpy(bp, va_arg(ap, char *)); + xstrncpy(bp, va_arg(ap, char *), &buf[BUFSIZ-1] - bp); bp += strlen(bp); fmt += 2; } else if (strncmp(fmt, "%m", 2) == 0) { - (void) strcpy(bp, strerror(errno)); + xstrncpy(bp, strerror(errno), &buf[BUFSIZ-1] - bp); bp += strlen(bp); fmt += 2; } else { diff --git a/login-utils/login.c b/login-utils/login.c index 409507396..d66295c5c 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -222,6 +222,9 @@ int timeout = 60; /* used in cryptocard.c */ #endif struct passwd *pwd; /* used in cryptocard.c */ +#if USE_PAM +static struct passwd pwdcopy; +#endif char hostaddress[4]; /* used in checktty.c */ char *hostname; /* idem */ static char *username, *tty_name, *tty_number; @@ -532,9 +535,10 @@ main(int argc, char **argv) retcode = pam_start("login",username, &conv, &pamh); if(retcode != PAM_SUCCESS) { - fprintf(stderr,_("login: PAM Failure, aborting: %s\n"), + fprintf(stderr, _("login: PAM Failure, aborting: %s\n"), pam_strerror(pamh, retcode)); - syslog(LOG_ERR,_("Couldn't initialize PAM: %s"), pam_strerror(pamh, retcode)); + syslog(LOG_ERR, _("Couldn't initialize PAM: %s"), + pam_strerror(pamh, retcode)); exit(99); } /* hostname & tty are either set to NULL or their correct values, @@ -629,16 +633,52 @@ main(int argc, char **argv) First get the username that we are actually using, though. */ retcode = pam_get_item(pamh, PAM_USER, (const void **) &username); - if (retcode == PAM_SUCCESS && username && *username) { - pwd = getpwnam(username); + PAM_FAIL_CHECK; + + if (!username || !*username) { + fprintf(stderr, _("\nSession setup problem, abort.\n")); + syslog(LOG_ERR, _("NULL user name in %s:%d. Abort."), + __FUNCTION__, __LINE__); + pam_end(pamh, PAM_SYSTEM_ERR); + exit(1); + } + if (!(pwd = getpwnam(username))) { + fprintf(stderr, _("\nSession setup problem, abort.\n")); + syslog(LOG_ERR, _("Invalid user name \"%s\" in %s:%d. Abort."), + __FUNCTION__, __LINE__); + pam_end(pamh, PAM_SYSTEM_ERR); + exit(1); + } + + /* Create a copy of the pwd struct - otherwise it may get + * clobbered by PAM */ + memcpy(&pwdcopy, pwd, sizeof(*pwd)); + pwd = &pwdcopy; + pwd->pw_name = strdup(pwd->pw_name); + pwd->pw_passwd = strdup(pwd->pw_passwd); + pwd->pw_gecos = strdup(pwd->pw_gecos); + pwd->pw_dir = strdup(pwd->pw_dir); + pwd->pw_shell = strdup(pwd->pw_shell); + if (!pwd->pw_name || !pwd->pw_passwd || !pwd->pw_gecos || + !pwd->pw_dir || !pwd->pw_shell) { + fprintf(stderr, _("login: Out of memory\n")); + syslog(LOG_ERR, "Out of memory"); + pam_end(pamh, PAM_SYSTEM_ERR); + exit(1); } + username = pwd->pw_name; /* * Initialize the supplementary group list. * This should be done before pam_setcred because * the PAM modules might add groups during pam_setcred. */ - if (pwd) initgroups(username, pwd->pw_gid); + if (initgroups(username, pwd->pw_gid) < 0) { + syslog(LOG_ERR, "initgroups: %m"); + fprintf(stderr, _("\nSession setup problem, abort.\n")); + pam_end(pamh, PAM_SYSTEM_ERR); + exit(1); + } retcode = pam_open_session(pamh, 0); PAM_FAIL_CHECK; @@ -803,7 +843,7 @@ main(int argc, char **argv) default: perror("quota (Q_SETUID)"); } - sleepexit(0); + sleepexit(0); /* %% */ } #endif @@ -1057,8 +1097,10 @@ Michael Riepe motd(); mail = getenv("MAIL"); if (mail && stat(mail, &st) == 0 && st.st_size != 0) { - printf(_("You have %smail.\n"), - (st.st_mtime > st.st_atime) ? _("new ") : ""); + if (st.st_mtime > st.st_atime) + printf(_("You have new mail.\n")); + else + printf(_("You have mail.\n")); } } @@ -1216,7 +1258,7 @@ timedout(int sig) { ioctl(0, TCGETA, &ti); ti.c_lflag |= ECHO; ioctl(0, TCSETA, &ti); - exit(0); + exit(0); /* %% */ } #ifndef USE_PAM @@ -1285,12 +1327,13 @@ sigint(int sig) { #ifndef USE_PAM /* PAM takes care of this */ void checknologin(void) { - register int fd, nchars; + int fd, nchars; char tbuf[8192]; if ((fd = open(_PATH_NOLOGIN, O_RDONLY, 0)) >= 0) { while ((nchars = read(fd, tbuf, sizeof(tbuf))) > 0) write(fileno(stdout), tbuf, nchars); + close(fd); sleepexit(0); } } @@ -1360,7 +1403,7 @@ stypeof(char *ttyid) { } #endif -/* should not be called from PAM code... Why? */ +/* Should not be called from PAM code... */ void sleepexit(int eval) { sleep(SLEEP_EXIT_TIMEOUT); diff --git a/login-utils/passwd.c b/login-utils/passwd.c index d931d3b88..cb50c0ef2 100644 --- a/login-utils/passwd.c +++ b/login-utils/passwd.c @@ -171,9 +171,11 @@ check_passwd(char *passwd, char *oldpasswd, char *user, char *gecos) { } if ( (other + digit + ucase + lcase) < 2) { - printf(_("The password must contain characters out of two of the following\n")); - printf(_("classes: upper and lower case letters, digits and non alphanumeric\n")); - printf(_("characters. See passwd(1) for more information.\n")); + printf(_("The password must contain characters out of two of " + "the following\n" + "classes: upper and lower case letters, digits and " + "non alphanumeric\n" + "characters. See passwd(1) for more information.\n")); return 0; } @@ -235,7 +237,7 @@ main(int argc, char *argv[]) { char salt[2]; int force_passwd = 0; int silent = 0; - char c; + int c; int opt_index; int fullname = 0, shell = 0; static const struct option long_options[] = diff --git a/login-utils/shutdown.c b/login-utils/shutdown.c index c7efe746e..46f29a704 100644 --- a/login-utils/shutdown.c +++ b/login-utils/shutdown.c @@ -152,6 +152,7 @@ main(int argc, char *argv[]) } sigsetmask (0); /* simpleinit(8) blocks all signals: undo for ALRM */ for (i = 1; i < NSIG; i++) signal (i, SIG_DFL); + setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -357,8 +358,12 @@ main(int argc, char *argv[]) /* do syslog message... */ openlog(prog, LOG_CONS, LOG_AUTH); - syslog(LOG_NOTICE, _("%s by %s: %s"), - opt_reboot ? _("rebooted") : _("halted"), whom, message); + if (opt_reboot) + syslog(LOG_NOTICE, _("rebooted by %s: %s"), + whom, message); + else + syslog(LOG_NOTICE, _("halted by %s: %s"), + whom, message); closelog(); if(opt_fast) diff --git a/login-utils/simpleinit.c b/login-utils/simpleinit.c index 9c08a03a6..1b4fbcbeb 100644 --- a/login-utils/simpleinit.c +++ b/login-utils/simpleinit.c @@ -173,9 +173,11 @@ int main(int argc, char *argv[]) for (i = 0; i < NUMCMD; i++) inittab[i].pid = -1; read_inittab (); for (i = 1; i < argc; i++) { - if (strcmp (argv[i], "single") == 0) want_single = 1; - else if (strcmp (argv[i], "-noreboot") == 0) no_reboot = 1; - else { + if (strcmp (argv[i], "single") == 0) + want_single = 1; + else if (strcmp (argv[i], "-noreboot") == 0) + no_reboot = 1; + else if (strlen(script_prefix) + strlen(argv[i]) < PATH_SIZE) { char path[PATH_SIZE]; strcpy (path, script_prefix); diff --git a/login-utils/vipw.c b/login-utils/vipw.c index f6133ac98..cb4048070 100644 --- a/login-utils/vipw.c +++ b/login-utils/vipw.c @@ -135,14 +135,17 @@ pw_lock(void) { */ #if 0 /* flock()ing is superfluous here, with the ptmp/ptmptmp system. */ if (flock(lockfd, LOCK_EX|LOCK_NB)) { - (void)fprintf(stderr, - _("%s: the %s file is busy.\n"), progname, - program == VIPW ? "password" : "group" ); + if (program == VIPW) + fprintf(stderr, _("%s: the password file is busy.\n"), + progname); + else + fprintf(stderr, _("%s: the group file is busy.\n"), + progname); exit(1); } #endif - if ((fd = open(tmptmp_file, O_WRONLY|O_CREAT, 0644)) == -1) { + if ((fd = open(tmptmp_file, O_WRONLY|O_CREAT, 0600)) == -1) { (void)fprintf(stderr, "%s: %s: %s\n", progname, tmptmp_file, strerror(errno)); exit(1); @@ -181,19 +184,19 @@ pw_lock(void) { static void pw_unlock(void) { - char tmp[FILENAMELEN]; + char tmp[FILENAMELEN+4]; - sprintf(tmp, "%s%s", orig_file, ".OLD"); - unlink(tmp); - link(orig_file, tmp); - if (rename(tmp_file, orig_file) == -1) { - int errsv = errno; - (void)fprintf(stderr, - _("%s: can't unlock %s: %s (your changes are still in %s)\n"), - progname, orig_file, strerror(errsv), tmp_file); - exit(1); - } - (void)unlink(tmp_file); + sprintf(tmp, "%s%s", orig_file, ".OLD"); + unlink(tmp); + link(orig_file, tmp); + if (rename(tmp_file, orig_file) == -1) { + int errsv = errno; + fprintf(stderr, + _("%s: can't unlock %s: %s (your changes are still in %s)\n"), + progname, orig_file, strerror(errsv), tmp_file); + exit(1); + } + unlink(tmp_file); } @@ -238,27 +241,23 @@ pw_edit(int notsetuid) { } void -pw_error(name, err, eval) - char *name; - int err, eval; -{ - int sverrno; - +pw_error(char *name, int err, int eval) { if (err) { - sverrno = errno; - (void)fprintf(stderr, "%s: ", progname); + int sverrno = errno; + + fprintf(stderr, "%s: ", progname); if (name) (void)fprintf(stderr, "%s: ", name); - (void)fprintf(stderr, "%s\n", strerror(sverrno)); + fprintf(stderr, "%s\n", strerror(sverrno)); } - (void)fprintf(stderr, + fprintf(stderr, _("%s: %s unchanged\n"), progname, orig_file); - (void)unlink(tmp_file); + unlink(tmp_file); exit(eval); } static void -edit_file(void) +edit_file(int is_shadow) { struct stat begin, end; @@ -274,62 +273,68 @@ edit_file(void) (void)fprintf(stderr, _("%s: no changes made\n"), progname); pw_error((char *)NULL, 0, 0); } + if (!is_shadow) + chmod(tmp_file, 0644); +#if 0 + /* if shadow file, then mode is 0600 now */ + else + chmod(tmp_file, 0400); +#endif pw_unlock(); } -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + bzero(tmp_file, FILENAMELEN); + progname = (rindex(argv[0], '/')) ? rindex(argv[0], '/') + 1 : argv[0]; + if (!strcmp(progname, "vigr")) { + program = VIGR; + xstrncpy(orig_file, GROUP_FILE, sizeof(orig_file)); + xstrncpy(tmp_file, GTMP_FILE, sizeof(tmp_file)); + xstrncpy(tmptmp_file, GTMPTMP_FILE, sizeof(tmptmp_file)); + } else { + program = VIPW; + xstrncpy(orig_file, PASSWD_FILE, sizeof(orig_file)); + xstrncpy(tmp_file, PTMP_FILE, sizeof(tmp_file)); + xstrncpy(tmptmp_file, PTMPTMP_FILE, sizeof(tmptmp_file)); + } + + if ((argc > 1) && + (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version"))) { + printf("%s\n", version_string); + exit(0); + } + + edit_file(0); + + if (program == VIGR) { + strncpy(orig_file, SGROUP_FILE, FILENAMELEN-1); + strncpy(tmp_file, SGTMP_FILE, FILENAMELEN-1); + strncpy(tmptmp_file, SGTMPTMP_FILE, FILENAMELEN-1); + } else { + strncpy(orig_file, SHADOW_FILE, FILENAMELEN-1); + strncpy(tmp_file, SPTMP_FILE, FILENAMELEN-1); + strncpy(tmptmp_file, SPTMPTMP_FILE, FILENAMELEN-1); + } + + if (access(orig_file, F_OK) == 0) { + char response[80]; + + printf((program == VIGR) + ? _("You are using shadow groups on this system.\n") + : _("You are using shadow passwords on this system.\n")); + printf(_("Would you like to edit %s now [y/n]? "), orig_file); + + /* EOF means no */ + if (fgets(response, sizeof(response), stdin)) { + if (response[0] == 'y' || response[0] == 'Y') + edit_file(1); + } + } - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); - - bzero(tmp_file, FILENAMELEN); - progname = (rindex(argv[0], '/')) ? rindex(argv[0], '/') + 1 : argv[0]; - if (!strcmp(progname, "vigr")) { - program = VIGR; - xstrncpy(orig_file, GROUP_FILE, sizeof(orig_file)); - xstrncpy(tmp_file, GTMP_FILE, sizeof(tmp_file)); - xstrncpy(tmptmp_file, GTMPTMP_FILE, sizeof(tmptmp_file)); - } else { - program = VIPW; - xstrncpy(orig_file, PASSWD_FILE, sizeof(orig_file)); - xstrncpy(tmp_file, PTMP_FILE, sizeof(tmp_file)); - xstrncpy(tmptmp_file, PTMPTMP_FILE, sizeof(tmptmp_file)); - } - - if ((argc > 1) && - (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version"))) { - printf("%s\n", version_string); - exit(0); - } - - edit_file(); - - if (program == VIGR) { - strncpy(orig_file, SGROUP_FILE, FILENAMELEN-1); - strncpy(tmp_file, SGTMP_FILE, FILENAMELEN-1); - strncpy(tmptmp_file, SGTMPTMP_FILE, FILENAMELEN-1); - } else { - strncpy(orig_file, SHADOW_FILE, FILENAMELEN-1); - strncpy(tmp_file, SPTMP_FILE, FILENAMELEN-1); - strncpy(tmptmp_file, SPTMPTMP_FILE, FILENAMELEN-1); - } - - if (!access(orig_file, X_OK)) { - char response[80]; - - printf((program == VIGR) - ? _("You are using shadow groups on this system.\n") - : _("You are using shadow passwords on this system.\n")); - printf(_("Would you like to edit %s now [y/n]? "), orig_file); - - /* EOF means no */ - if (fgets(response, sizeof(response), stdin)) { - if (response[0] == 'y' || response[0] == 'Y') - edit_file(); - } - } - - exit(0); + exit(0); } diff --git a/login-utils/wall.c b/login-utils/wall.c index 744c910f0..0bd3b79a9 100644 --- a/login-utils/wall.c +++ b/login-utils/wall.c @@ -124,6 +124,13 @@ usage: if (utmpptr->ut_type != USER_PROCESS) continue; #endif + + /* Joey Hess reports that use-sessreg in /etc/X11/wdm/ + produces ut_line entries like :0, and a write + to /dev/:0 fails. */ + if (utmpptr->ut_line[0] == ':') + continue; + xstrncpy(line, utmpptr->ut_line, sizeof(utmpptr->ut_line)); if ((p = ttymsg(&iov, 1, line, 60*5)) != NULL) (void)fprintf(stderr, "%s: %s\n", progname, p); diff --git a/misc-utils/Makefile b/misc-utils/Makefile index 8edf14ed3..67350b709 100644 --- a/misc-utils/Makefile +++ b/misc-utils/Makefile @@ -7,6 +7,8 @@ include ../make_include include ../MCONFIG +# replay not added yet + # Where to put man pages? MAN1= cal.1 chkdupexe.1 ddate.1 kill.1 \ @@ -49,7 +51,7 @@ endif NEEDS_CURSES= setterm NEEDS_OPENPTY= script -all: $(BIN) $(USRBIN) $(USRBIN.NONSHADOW) $(USRGAMES) +all: $(BIN) $(USRBIN) $(USRBIN.NONSHADOW) $(NEEDS_CURSES): ifeq "$(HAVE_NCURSES)" "yes" @@ -74,6 +76,7 @@ $(NEEDS_OPENPTY): cal.o: $(LIB)/errs.h cal: cal.o $(ERR_O) chkdupexe: chkdupexe.pl +ddate: ddate.o kill: kill.o procs.o logger: logger.o mcookie: mcookie.o md5.o @@ -92,7 +95,7 @@ install: all $(INSTALLDIR) $(BINDIR) $(USRBINDIR) $(INSTALLBIN) $(BIN) $(BINDIR) $(INSTALLBIN) $(USRBIN) $(USRBINDIR) - $(INSTALLDIR) $(MAN1DIR) $(MAN8DIR) + $(INSTALLDIR) $(MAN1DIR) $(INSTALLMAN) $(MAN1) $(MAN1DIR) ifeq "$(HAVE_WRITE)" "no" ifeq "$(USE_TTY_GROUP)" "yes" diff --git a/misc-utils/cal.c b/misc-utils/cal.c index 768b0a510..2af9ae188 100644 --- a/misc-utils/cal.c +++ b/misc-utils/cal.c @@ -45,6 +45,14 @@ * get traditional output when -3 is the default. I hope that * enough people will like -3 as the default that one day the * product can be shipped that way. + * + * 2001-05-07 Pablo Saratxaga + * Fixed the bugs with multi-byte charset (zg: cjk, utf-8) + * displaying. made the 'month year' ("%s %d") header translatable + * so it can be adapted to conventions used by different languages + * added support to read "first_weekday" locale information + * still to do: support for 'cal_direction' (will require a major + * rewrite of the displaying) and proper handling of RTL scripts */ #include @@ -66,6 +74,8 @@ # include /* libc4 only */ #endif +#include "widechar.h" + /* allow compile-time define to over-ride default */ #ifndef NUM_MONTHS #define NUM_MONTHS 1 @@ -115,9 +125,17 @@ int sep1752[MAXDAYS] = { SPACE }; -char day_headings[] = " S M Tu W Th F S "; +#define DAY_LEN 3 /* 3 spaces per day */ +#define J_DAY_LEN 4 /* 4 spaces per day */ +#define WEEK_LEN 21 /* 7 days * 3 characters */ +#define J_WEEK_LEN 28 /* 7 days * 4 characters */ +#define HEAD_SEP 2 /* spaces between day headings */ +#define J_HEAD_SEP 2 + +/* utf-8 can have up to 6 bytes per char; and an extra byte for ending \0 */ +char day_headings[WEEK_LEN*6+1]; /* week1stday = 1 => " M Tu W Th F S S " */ -char j_day_headings[] = "Sun Mon Tue Wed Thu Fri Sat "; +char j_day_headings[J_WEEK_LEN*6+1]; /* week1stday = 1 => " M Tu W Th F S S " */ const char *full_month[12]; @@ -139,7 +157,7 @@ const char *full_month[12]; ((yr) / 4 - centuries_since_1700(yr) + quad_centuries_since_1700(yr)) /* 0 => sunday (default), 1 => monday */ -int week1stday; +int week1stday=0; int julian; #define FMT_ST_LINES 8 @@ -180,6 +198,12 @@ main(int argc, char **argv) { setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); + +#if 0 /* setting week1stday is against man page */ +#ifdef HAVE_langinfo_h + week1stday = (int)(nl_langinfo(_NL_TIME_FIRST_WEEKDAY))[0]; +#endif +#endif yflag = 0; while ((ch = getopt(argc, argv, "13mjyV")) != EOF) @@ -243,19 +267,28 @@ main(int argc, char **argv) { exit(0); } -#define DAY_LEN 3 /* 3 spaces per day */ -#define J_DAY_LEN 4 /* 4 spaces per day */ -#define WEEK_LEN 21 /* 7 days * 3 characters */ -#define J_WEEK_LEN 28 /* 7 days * 4 characters */ -#define HEAD_SEP 2 /* spaces between day headings */ -#define J_HEAD_SEP 2 +#ifndef ENABLE_WIDECHAR +static char *eos(char *s) { + while (s && *s) + s++; + return s; +} +#endif void headers_init(void) { int i, wd; +#ifdef ENABLE_WIDECHAR + wchar_t day_headings_wc[22],j_day_headings_wc[29]; + wchar_t wd_wc[10]; +#endif strcpy(day_headings,""); strcpy(j_day_headings,""); +#ifdef ENABLE_WIDECHAR + wcscpy(day_headings_wc,L""); + wcscpy(j_day_headings_wc,L""); +#endif #ifdef HAVE_langinfo_h # define weekday(wd) nl_langinfo(ABDAY_1+wd) @@ -265,14 +298,29 @@ void headers_init(void) for(i = 0 ; i < 7 ; i++ ) { wd = (i + week1stday) % 7; - strncat(day_headings,weekday(wd),2); - strncat(j_day_headings,weekday(wd),3); - if (strlen(weekday(wd)) == 2) - strcat(j_day_headings," "); - strcat(day_headings," "); - strcat(j_day_headings," "); +#ifdef ENABLE_WIDECHAR + mbstowcs(wd_wc,weekday(wd),10); + if (wcslen(wd_wc) < 3) + wcscat(j_day_headings_wc,L" "); + if (wcslen(wd_wc) < 2) { + wcscat(day_headings_wc, L" "); + wcscat(j_day_headings_wc, L" "); + } + wcsncat(day_headings_wc,wd_wc,2); + wcsncat(j_day_headings_wc,wd_wc,3); + wcscat(day_headings_wc, L" "); + wcscat(j_day_headings_wc, L" "); +#else + sprintf(eos(day_headings), "%2.2s ", weekday(wd)); + sprintf(eos(j_day_headings), "%3.3s ", weekday(wd)); +#endif } +#ifdef ENABLE_WIDECHAR + wcstombs(day_headings,day_headings_wc,sizeof(day_headings)); + wcstombs(j_day_headings,j_day_headings_wc,sizeof(j_day_headings)); +#endif + #undef weekday for (i = 0; i < 12; i++) { @@ -291,9 +339,20 @@ do_monthly(month, year, out) { int col, row, len, days[MAXDAYS]; char *p, lineout[300]; - +#ifdef ENABLE_WIDECHAR + wchar_t lineout_wc[300]; +#endif + day_array(month, year, days); - len = sprintf(lineout, "%s %d", full_month[month - 1], year); + /* %s is the month name, %d the year number. + * you can change the order and/or add something her; eg for + * Basque the translation should be: "%2$dko %1$s", and + * the Vietnamese should be "%s na(m %d", etc. + */ + len = sprintf(lineout, _("%s %d"), full_month[month - 1], year); +#ifdef ENABLE_WIDECHAR + len = mbstowcs(lineout_wc,lineout,len); +#endif (void)sprintf(out->s[0],"%*s%s", ((julian ? J_WEEK_LEN : WEEK_LEN) - len) / 2, "", lineout ); (void)sprintf(out->s[1],"%s", @@ -567,8 +626,15 @@ center(str, len, separate) int len; int separate; { +#ifdef ENABLE_WIDECHAR + wchar_t str_wc[300]; + int str_len; + str_len = mbstowcs(str_wc,str,300); + len -= str_len; +#else len -= strlen(str); +#endif (void)printf("%*s%s%*s", len / 2, "", str, len / 2 + len % 2, ""); if (separate) (void)printf("%*s", separate, ""); diff --git a/misc-utils/logger.1 b/misc-utils/logger.1 index 2c154ec09..6e6f831be 100644 --- a/misc-utils/logger.1 +++ b/misc-utils/logger.1 @@ -102,9 +102,12 @@ a sensitive nature), cron, daemon, ftp, kern, lpr, mail, news, security (deprecated synonym for auth), syslog, user, uucp, and local0 to local7, inclusive. .Pp -Valid level names are: alert, crit, debug, emerg, err, error -(deprecated synonym for err), info, notice, panic (deprecated synonym -for emerg), warning, warn (deprecated synonym for warning). +Valid level names are): +alert, crit, debug, emerg, err, error (deprecated synonym for err), +info, notice, panic (deprecated synonym for emerg), warning, +warn (deprecated synonym for warning). +For the priority order and intended purposes of these levels, see +.Xr syslog 3 . .Sh EXAMPLES .Bd -literal -offset indent -compact logger System rebooted diff --git a/misc-utils/namei.c b/misc-utils/namei.c index 783c5b9b6..60ec98a93 100644 --- a/misc-utils/namei.c +++ b/misc-utils/namei.c @@ -98,7 +98,9 @@ main(int argc, char **argv) { } if(getcwd(curdir, sizeof(curdir)) == NULL){ - (void)fprintf(stderr, _("namei: unable to get current directory - %s\n"), curdir); + (void)fprintf(stderr, + _("namei: unable to get current directory - %s\n"), + curdir); exit(1); } @@ -109,7 +111,9 @@ main(int argc, char **argv) { namei(argv[optind], 0); if(chdir(curdir) == -1){ - (void)fprintf(stderr, _("namei: unable to chdir to %s - %s (%d)\n"), curdir, ERR); + (void)fprintf(stderr, + _("namei: unable to chdir to %s - %s (%d)\n"), + curdir, ERR); exit(1); } } @@ -163,6 +167,11 @@ namei(char *file, int lev) { for(;;){ + if (strlen(file) >= BUFSIZ) { + fprintf(stderr,_("namei: buf overflow\n")); + return; + } + /* * Copy up to the next / (or nil) into buf */ @@ -228,7 +237,7 @@ namei(char *file, int lev) { case S_IFLNK: /* - * Sigh, another symlink. Read it's contents and + * Sigh, another symlink. Read its contents and * call namei() */ diff --git a/misc-utils/replay.1 b/misc-utils/replay.1 new file mode 100644 index 000000000..578cadbc5 --- /dev/null +++ b/misc-utils/replay.1 @@ -0,0 +1,179 @@ +.\" Automatically generated by Pod::Man version 1.02 +.\" Mon Sep 3 02:16:06 2001 +.\" +.\" Standard preamble: +.\" ====================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Ip \" List item +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R + +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used +.\" to do unbreakable dashes and therefore won't be available. \*(C` and +.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<> +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` ` +. ds C' ' +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr +.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and +.\" index entries marked with X<> in POD. Of course, you'll have to process +.\" the output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +. . +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it +.\" makes way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ====================================================================== +.\" +.IX Title "REPLAY 1" +.TH REPLAY 1 "perl v5.6.0" "2001-09-03" "User Contributed Perl Documentation" +.UC +.SH "NAME" +replay \- play back typescripts, using timing information +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +replay timingfile [typescript [divisor]] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +This program replays a typescript, using timing information to ensure that +output happens at the same speed as it originally appeared when the script +was recorded. It is only guaranteed to work preperly if run on the same +terminal the script was recorded on. +.PP +The timings information is what script outputs to standard error if it is +run with the \-t parameter. +.PP +By default, the typescript to display is assumed to be named \*(L"typescript\*(R", +but other filenames may be specified, as the second parameter. +.PP +If the third parameter exits, it is used as a time divisor. For example, +specifying a divisor of 2 makes the script be replayed twice as fast. +.SH "EXAMPLE" +.IX Header "EXAMPLE" +.Vb 7 +\& % script -t 2> timingfile +\& Script started, file is typescript +\& % ls +\& +\& % exit +\& Script done, file is typescript +\& % replay timingfile +.Ve +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +This program is in the public domain. +.SH "AUTHOR" +.IX Header "AUTHOR" +Joey Hess diff --git a/misc-utils/replay.pl b/misc-utils/replay.pl new file mode 100755 index 000000000..78564d6be --- /dev/null +++ b/misc-utils/replay.pl @@ -0,0 +1,79 @@ +#!/usr/bin/perl -w + +# "script -t" will output a typescript with timings +# this script "replay" replays it +# run pod2man on it to get a man page + +=head1 NAME + +replay - play back typescripts, using timing information + +=head1 SYNOPSIS + +replay timingfile [typescript [divisor]] + +=head1 DESCRIPTION + +This program replays a typescript, using timing information to ensure that +output happens at the same speed as it originally appeared when the script +was recorded. It is only guaranteed to work preperly if run on the same +terminal the script was recorded on. + +The timings information is what script outputs to standard error if it is +run with the -t parameter. + +By default, the typescript to display is assumed to be named "typescript", +but other filenames may be specified, as the second parameter. + +If the third parameter exits, it is used as a time divisor. For example, +specifying a divisor of 2 makes the script be replayed twice as fast. + +=head1 EXAMPLE + + % script -t 2> timingfile + Script started, file is typescript + % ls + + % exit + Script done, file is typescript + % replay timingfile + +=cut + +use strict; +$|=1; +open (TIMING, shift) + or die "cannot read timing info: $!"; +open (TYPESCRIPT, shift || 'typescript') + or die "cannot read typescriot: $!"; +my $divisor=shift || 1; + +# Read starting timestamp line and ignore. +; + +my $block; +my $oldblock=''; +while () { + my ($delay, $blocksize)=split ' ', $_, 2; + # Sleep, unless the delay is really tiny. Realy tiny delays cannot + # be accurately done, because the system calls in this loop will + # have more overhead. The 0.0001 is arbitrary, but works fairly well. + if ($delay / $divisor > 0.0001) { + select(undef, undef, undef, $delay / $divisor - 0.0001); + } + + read(TYPESCRIPT, $block, $blocksize) + or die "read filure on typescript: $!"; + print $oldblock; + $oldblock=$block; +} +print $oldblock; + +=head1 COPYRIGHT + +This program is in the public domain. + +=head1 AUTHOR + +Joey Hess + diff --git a/misc-utils/script.1 b/misc-utils/script.1 index 3edd82d4b..545ac3bc6 100644 --- a/misc-utils/script.1 +++ b/misc-utils/script.1 @@ -42,6 +42,7 @@ .Op Fl a .Op Fl f .Op Fl q +.Op Fl t .Op Ar file .Sh DESCRIPTION .Nm Script @@ -74,6 +75,12 @@ One person does `mkfifo foo; script -f foo' and another can supervise real-time what is being done using `cat foo'. .It Fl q Be quiet. +.It Fl t +Output timeing data to standard error. This data contains two fields, +separated by a space. The first field indicates how much time elapsed since +the previous output. The second field indicates how many characters were +output this time. This information can be used to replay typescripts with +realistic typing and output delays. .El .Pp The script ends when the forked shell exits (a diff --git a/misc-utils/script.c b/misc-utils/script.c index de158cd35..973e80aa6 100644 --- a/misc-utils/script.c +++ b/misc-utils/script.c @@ -93,6 +93,7 @@ char line[] = "/dev/ptyXX"; int aflg = 0; int fflg = 0; int qflg = 0; +int tflg = 0; static char *progname; @@ -134,7 +135,7 @@ main(int argc, char **argv) { } } - while ((ch = getopt(argc, argv, "afq")) != EOF) + while ((ch = getopt(argc, argv, "afqt")) != EOF) switch((char)ch) { case 'a': aflg++; @@ -145,10 +146,13 @@ main(int argc, char **argv) { case 'q': qflg++; break; + case 't': + tflg++; + break; case '?': default: fprintf(stderr, - _("usage: script [-a] [-f] [-q] [file]\n")); + _("usage: script [-a] [-f] [-q] [-t] [file]\n")); exit(1); } argc -= optind; @@ -239,6 +243,8 @@ dooutput() { register int cc; time_t tvec; char obuf[BUFSIZ]; + struct timeval tv; + double oldtime=time(NULL), newtime; (void) close(0); #ifdef HAVE_openpty @@ -247,9 +253,16 @@ dooutput() { tvec = time((time_t *)NULL); fprintf(fscript, _("Script started on %s"), ctime(&tvec)); for (;;) { + if (tflg) + gettimeofday(&tv, NULL); cc = read(master, obuf, sizeof (obuf)); if (cc <= 0) break; + if (tflg) { + newtime=tv.tv_sec + (double) tv.tv_usec / 1000000; + fprintf(stderr, "%f %i\n", newtime - oldtime, cc); + oldtime=newtime; + } (void) write(1, obuf, cc); (void) fwrite(obuf, 1, cc, fscript); if (fflg) diff --git a/misc-utils/setterm.c b/misc-utils/setterm.c index 2e265fc51..435e7e482 100644 --- a/misc-utils/setterm.c +++ b/misc-utils/setterm.c @@ -290,10 +290,10 @@ par_color(int argc, char **argv, int *option, int *opt_color, int *bad_arg) { *opt_color = DEFAULT; else if (isdigit(argv[0][0])) *opt_color = atoi(argv[0]); - else + else *bad_arg = TRUE; - if(*opt_color < 0 || *opt_color > 7) + if(*opt_color < 0 || *opt_color > 9 || *opt_color == 8) *bad_arg = TRUE; } } diff --git a/mount/fstab.5 b/mount/fstab.5 index 608f81d82..a9ff43835 100644 --- a/mount/fstab.5 +++ b/mount/fstab.5 @@ -76,7 +76,7 @@ For NFS mounts one will have :, e.g., `knuth.aeb.nl:/'. For procfs, use `proc'. .LP Instead of giving the device explicitly, one may indicate -the (ext2 or XFS) filesystem that is to be mounted by its UUID or +the (ext2 or xfs) filesystem that is to be mounted by its UUID or volume label (cf. .BR e2label (8) or @@ -151,8 +151,9 @@ see For documentation on all nfs-specific options have a look at .BR nfs (5). Common for all types of file system are the options ``noauto'' -(do not mount when "mount -a" is given, e.g., at boot time), -and ``user'' (allow a user to mount). For more details, see +(do not mount when "mount -a" is given, e.g., at boot time), ``user'' +(allow a user to mount), and ``owner'' +(allow device owner to mount). For more details, see .BR mount (8). The fifth field, diff --git a/mount/linux_fs.h b/mount/linux_fs.h index 978573892..1ed02b8c5 100644 --- a/mount/linux_fs.h +++ b/mount/linux_fs.h @@ -63,6 +63,31 @@ struct ext2_super_block { }; #define ext2magic(s) ((uint) s.s_magic[0] + (((uint) s.s_magic[1]) << 8)) +struct reiserfs_super_block +{ + u_char s_block_count[4]; + u_char s_free_blocks[4]; + u_char s_root_block[4]; + u_char s_journal_block[4]; + u_char s_journal_dev[4]; + u_char s_orig_journal_size[4]; + u_char s_journal_trans_max[4]; + u_char s_journal_block_count[4]; + u_char s_journal_max_batch[4]; + u_char s_journal_max_commit_age[4]; + u_char s_journal_max_trans_age[4]; + u_char s_blocksize[2]; + u_char s_oid_maxsize[2]; + u_char s_oid_cursize[2]; + u_char s_state[2]; + u_char s_magic[12]; +}; +#define REISERFS_SUPER_MAGIC_STRING "ReIsErFs" +#define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs" +#define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024) +/* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */ +#define REISERFS_OLD_DISK_OFFSET_IN_BYTES (8 * 1024) + #define _XIAFS_SUPER_MAGIC 0x012FD16D struct xiafs_super_block { u_char s_boot_segment[512]; /* 1st sector reserved for boot */ @@ -154,3 +179,30 @@ struct adfs_super_block { u_char s_checksum[1]; }; #define adfsblksize(s) ((uint) s.s_blksize[0]) + +/* found in first 4 bytes of block 1 */ +struct vxfs_super_block { + u_char s_magic[4]; +}; +#define vxfsmagic(s) ((uint) s.s_magic[0] + (((uint) s.s_magic[1]) << 8) + \ + (((uint) s.s_magic[2]) << 16) + \ + (((uint) s.s_magic[3]) << 24)) +#define VXFS_SUPER_MAGIC 0xa501FCF5 + +struct jfs_super_block { + char s_magic[4]; +}; +#define JFS_SUPER1_OFF 0x8000 +#define JFS_MAGIC "JFS1" + +#define SYSV_SUPER_MAGIC 0xfd187e20 + +struct sysv_super_block { + u_char s_dummy1[504]; + u_char s_magic[4]; + u_char type[4]; +}; + +#define sysvmagic(s) ((uint) s.s_magic[0] + (((uint) s.s_magic[1]) << 8) + \ + (((uint) s.s_magic[2]) << 16) + \ + (((uint) s.s_magic[3]) << 24)) diff --git a/mount/mount.8 b/mount/mount.8 index 6f96457df..0280bb844 100644 --- a/mount/mount.8 +++ b/mount/mount.8 @@ -35,6 +35,7 @@ .\" 990111, aeb: documented /sbin/mount.smbfs .\" 990730, Yann Droneaud : updated page .\" 991214, Elrond : added some docs on devpts +.\" 010725, Nikita Danilov : reiserfs options .\" .TH MOUNT 8 "14 September 1997" "Linux 2.0" "Linux Programmer's Manual" .SH NAME @@ -95,7 +96,7 @@ prints a version string; and just .RE lists all mounted file systems (of type .IR type ). -The option \-l adds the (ext2 and XFS) labels in this listing. +The option \-l adds the (ext2, ext3 and XFS) labels in this listing. See below. .\" In fact since 2.3.99. At first the syntax was mount -t bind. @@ -276,9 +277,9 @@ command is trying to do. It can also be used to add entries for devices that were mounted earlier with the -n option. .TP .B \-l -Add the ext2 and XFS labels in the mount output. Mount must have permission to -read the disk device (e.g. be suid root) for this to work. -One can set such a label for ext2 using the +Add the ext2, ext3 and XFS labels in the mount output. Mount must have +permission to read the disk device (e.g. be suid root) for this to work. +One can set such a label for ext2 or ext3 using the .BR e2label (8) utility, or for XFS using .BR xfs_admin (8). @@ -330,9 +331,11 @@ currently supported are: .IR efs , .IR ext , .IR ext2 , +.IR ext3 , .IR hfs , .IR hpfs , .IR iso9660 , +.IR jfs , .IR minix , .IR msdos , .IR ncpfs , @@ -340,6 +343,7 @@ currently supported are: .IR ntfs , .IR proc , .IR qnx4 , +.IR reiserfs , .IR romfs , .IR smbfs , .IR sysv , @@ -387,9 +391,9 @@ is the default. If no option is given, or if the .B auto type is specified, the superblock is probed for the filesystem type -.RI ( minix ", " ext ", " ext2 ", " xiafs ", " iso9660 ", " romfs -.RI , ufs ", " ntfs ", " qnx4 ", " bfs ", " xfs ", " cramfs ", " hfs -.RI , hpfs ", " adfs +.RI ( minix ", " ext ", " ext2 ", " ext3 ", " xiafs ", " iso9660 , +.IR jfs ", " reiserfs ", " romfs ", " ufs ", " ntfs ", " qnx4 ", " bfs , +.IR xfs ", " cramfs ", " hfs ", " hpfs ", " adfs ", " vxfs are supported). If this probe fails, mount will try to read the file .IR /etc/filesystems , @@ -440,7 +444,7 @@ Some of these options are only useful when they appear in the file. The following options apply to any file system that is being mounted (but not every file system actually honors them - e.g., the .B sync -option today has effect only for ext2 and ufs): +option today has effect only for ext2, ext3 and ufs): .RS .TP .B async @@ -510,11 +514,20 @@ effect. All I/O to the file system should be done synchronously. .TP .B user -Allow an ordinary user to mount the file system. This option implies -the options +Allow an ordinary user to mount the file system. +The name of the mounting user is written to mtab so that he can unmount +the file system again. +This option implies the options .BR noexec ", " nosuid ", and " nodev (unless overridden by subsequent options, as in the option line .BR user,exec,dev,suid ). +.TP +.B users +Allow every user to mount and unmount the file system. +This option implies the options +.BR noexec ", " nosuid ", and " nodev +(unless overridden by subsequent options, as in the option line +.BR users,exec,dev,suid ). .RE .SH "FILESYSTEM SPECIFIC MOUNT OPTIONS" @@ -706,10 +719,58 @@ superblocks, and since version 1.15 this is the default. Note that this may mean that ext2 filesystems created by a recent .B mke2fs cannot be mounted r/w under Linux 2.0.*.) +The block number here uses 1k units. Thus, if you want to use logical +block 32768 on a filesystem with 4k blocks, use "sb=131072". .TP .BR grpquota " / " noquota " / " quota " / " usrquota These options are accepted but ignored. +.TP +.BR nouid32 +Disables 32-bit UIDs and GIDs. This is for interoperability with older +kernels which only store and expect 16-bit values. + + +.SH "Mount options for ext3" +The `ext3' file system is version of the ext2 file system which has been +enhanced with journalling. It supports the same options as ext2 as +well as the following additions: +.\" .TP +.\" .BR abort +.\" Mount the file system in abort mode, as if a fatal error has occurred. +.TP +.BR journal=update +Update the ext3 file system's journal to the current format. +.TP +.BR journal=inum +When a journal already exists, this option is ignored. Otherwise, it +specifies the number of the inode which will represent the ext3 file system's +journal file; ext3 will create a new journal, overwriting the old contents +of the file whose inode number is +.IR inum . +.TP +.BR noload +Do not load the ext3 file system's journal on mounting. +.TP +.BR data=journal " / " data=ordered " / " data=writeback +Specifies the journalling mode for file data. Metadata is always journaled. +.RS +.TP +.B journal +All data is committed into the journal prior to being written into the +main file system. +.TP +.B ordered +This is the default mode. All data is forced directly out to the main file +system prior to its metadata being committed to the journal. +.TP +.B writeback +Data ordering is not preserved - data may be written into the main +file system after its metadata has been committed to the journal. +This is rumoured to be the highest-throughput option. It guarantees +internal file system integrity, however it can allow old data to appear +in files after a crash and journal recovery. + .SH "Mount options for fat" (Note: .I fat @@ -1054,9 +1115,11 @@ unconvertible characters. Use UTF-8 for converting file names. .TP .B uni_xlate=[0|1|2] -For 0 (or `no' or `false') or 1 (or `yes' or `true'): -use the VFAT-style encoding for file names outside the current -character set. A value of 2 will disable the encoding with ":". +For 0 (or `no' or `false'), do not use escape sequences +for unknown Unicode characters. +For 1 (or `yes' or `true') or 2, use vfat-style 4-byte escape sequences +starting with ":". Here 2 give a little-endian encoding +and 1 a byteswapped bigendian encoding. .TP .B posix=[0|1] If enabled (posix=1), the file system distinguishes between @@ -1072,6 +1135,89 @@ By default, the files are owned by root and not readable by somebody else. \fBuid=\fP\fIvalue\fP and \fBgid=\fP\fIvalue\fP These options are recognized, but have no effect as far as I can see. +.SH "Mount options for reiserfs" +The reiserfs mount options are more fully described at +.IR http://www.namesys.com/mount-options.html . +.TP +.BR conv +Instructs version 3.6 reiserfs software to mount a version 3.5 file system, +using the 3.6 format for newly created objects. This file system will no +longer be compatible with reiserfs 3.5 tools. +.TP +.BR hash=rupasov " / " hash=tea " / " hash=r5 " / " hash=detect +Choose which hash function reiserfs will use to find files within directories. +.RS +.TP +.B rupasov +A hash invented by Yury Yu. Rupasov. It is fast and preserves locality, +mapping lexicographically close file names to close hash values. +This option should not be used, as it causes a high probability of hash +collisions. +.TP +.B tea +A Davis-Meyer function implemented by Jeremy Fitzhardinge. +It uses hash permuting bits in the name. It gets high randomness +and, therefore, low probability of hash collisions at come CPU cost. +This may be used if EHASHCOLLISION errors are experienced with the r5 hash. +.TP +.B r5 +A modified version of the rupasov hash. It is used by default and is +the best choice unless the file system has huge directories and +unusual file-name patterns. +.TP +.B detect +Instructs +.IR mount +to detect which hash function is in use by examining +the file system being mounted, and to write this information into +the reiserfs superblock. This is only useful on the first mount of +an old format file system. +.RE +.TP +.BR hashed_relocation +Tunes the block allocator. This may provide performance improvements +in some situations. +.TP +.BR no_unhashed_relocation +Tunes the block allocator. This may provide performance improvements +in some situations. +.TP +.BR noborder +Disable the border allocator algorithm invented by Yury Yu. Rupasov. +This may provide performance improvements in some situations. +.TP +.BR nolog +Disable journalling. This will provide slight performance improvements in +some situations at the cost of losing reiserfs's fast recovery from crashes. +Even with this option turned on, reiserfs still performs all journalling +operations, save for actual writes into its journalling area. Implementation +of +.IR nolog +is a work in progress. +.TP +.BR notail +By default, reiserfs stores small files and `file tails' directly into its +tree. This confuses some utilities such as +.BR LILO (8) . +This option is used to disable packing of files into the tree. +.TP +.BR replayonly +Replay the transactions which are in the journal, but do not actually +mount the file system. Mainly used by +.IR reiserfsck . +.TP +.BI resize= number +A remount option which permits online expansion of reiserfs partitions. +Instructs reiserfs to assume that the device has +.I number +blocks. +This option is designed for use with devices which are under logical +volume management (LVM). +There is a special +.I resizer +utility which can be obtained from +.IR ftp://ftp.namesys.com/pub/reiserfsprogs . + .SH "Mount options for romfs" None. @@ -1396,8 +1542,8 @@ It is possible for a corrupted file system to cause a crash. .PP Some Linux file systems don't support .B "\-o sync" -(the ext2fs -.I does +(the ext2 and ext3 file systems +.I do support synchronous updates (a la BSD) when mounted with the .B sync option). diff --git a/mount/mount_by_label.c b/mount/mount_by_label.c index 18344e4bd..f4d455d72 100644 --- a/mount/mount_by_label.c +++ b/mount/mount_by_label.c @@ -31,11 +31,11 @@ static struct uuidCache_s { char *device; } *uuidCache = NULL; -/* for now, only ext2 and xfs are supported */ +/* for now, only ext2, ext3 and xfs are supported */ static int get_label_uuid(const char *device, char **label, char *uuid) { - /* start with ext2 and xfs tests, taken from mount_guess_fstype */ + /* start with ext2/3 and xfs tests, taken from mount_guess_fstype */ /* should merge these later */ int fd; int rv = 1; diff --git a/mount/mount_guess_fstype.c b/mount/mount_guess_fstype.c index 8694213d0..f6940af36 100644 --- a/mount/mount_guess_fstype.c +++ b/mount/mount_guess_fstype.c @@ -18,11 +18,14 @@ * so useful anymore.] * * 1999-02-22 Arkadiusz Mi¶kiewicz - * - added Native Language Support + * added Native Language Support * - * Fri Dec 1 23:31:00 2000: Sepp Wijnands + * 2000-12-01 Sepp Wijnands * added probes for cramfs, hfs, hpfs and adfs. * + * 2001-10-26 Tim Launchbury + * added sysv magic. + * * aeb - many changes. * */ @@ -70,23 +73,25 @@ assemble4le(unsigned char *p) { Original routine by ; made into a function for mount(8) by Mike Grupenhoff . + Corrected the test for xiafs - aeb Read the superblock only once - aeb - Added iso9660, romfs, qnx4, udf, swap - aeb + Added a very weak heuristic for vfat - aeb + Added iso9660, romfs, qnx4, udf, vxfs, swap - aeb Added a test for high sierra (iso9660) - quinlan@bucknell.edu - Corrected the test for xiafs - aeb Added ufs from a patch by jj. But maybe there are several types of ufs? Added ntfs from a patch by Richard Russon. - Added a very weak heuristic for vfat - aeb Added xfs - 2000-03-21 Martin K. Petersen Added cramfs, hfs, hpfs, adfs - Sepp Wijnands Added ext3 - Andrew Morton + Added jfs - Christoph Hellwig + Added sysv - Tim Launchbury */ static char *magic_known[] = { "adfs", "bfs", "cramfs", "ext", "ext2", "ext3", - "hfs", "hpfs", "iso9660", "minix", "ntfs", - "qnx4", "romfs", "swap", "udf", "ufs", - "xfs", "xiafs" + "hfs", "hpfs", "iso9660", "jfs", "minix", "ntfs", + "qnx4", "reiserfs", "romfs", "swap", "sysv", "udf", "ufs", + "vxfs", "xfs", "xiafs" }; static int @@ -138,6 +143,14 @@ may_be_adfs(const u_char *s) { return (sum == p[511]); } +static int is_reiserfs_magic_string (struct reiserfs_super_block * rs) +{ + return (!strncmp (rs->s_magic, REISERFS_SUPER_MAGIC_STRING, + strlen ( REISERFS_SUPER_MAGIC_STRING)) || + !strncmp (rs->s_magic, REISER2FS_SUPER_MAGIC_STRING, + strlen ( REISER2FS_SUPER_MAGIC_STRING))); +} + static char * fstype(const char *device) { int fd; @@ -146,7 +159,8 @@ fstype(const char *device) { struct minix_super_block ms; struct ext_super_block es; struct ext2_super_block e2s; - } sb; + struct vxfs_super_block vs; + } sb; /* stuff at 1024 */ union { struct xiafs_super_block xiasb; char romfs_magic[8]; @@ -162,9 +176,12 @@ fstype(const char *device) { struct iso_volume_descriptor iso; struct hs_volume_descriptor hs; } isosb; + struct reiserfs_super_block reiserfssb; /* block 64 or 8 */ + struct jfs_super_block jfssb; /* block 32 */ struct hfs_super_block hfssb; struct hpfs_super_block hpfssb; struct adfs_super_block adfssb; + struct sysv_super_block svsb; struct stat statbuf; /* opening and reading an arbitrary unknown path can have @@ -204,7 +221,33 @@ fstype(const char *device) { else if (extmagic(sb.es) == EXT_SUPER_MAGIC) type = "ext"; + else if (vxfsmagic(sb.vs) == VXFS_SUPER_MAGIC) + type = "vxfs"; + + if (!type) { + /* block 64 */ + if (lseek(fd, REISERFS_DISK_OFFSET_IN_BYTES, SEEK_SET) != + REISERFS_DISK_OFFSET_IN_BYTES + || read(fd, (char *) &reiserfssb, sizeof(reiserfssb)) != + sizeof(reiserfssb)) + goto io_error; + if (is_reiserfs_magic_string(&reiserfssb)) + type = "reiserfs"; + } + if (!type) { + /* block 8 */ + if (lseek(fd, REISERFS_OLD_DISK_OFFSET_IN_BYTES, SEEK_SET) != + REISERFS_OLD_DISK_OFFSET_IN_BYTES + || read(fd, (char *) &reiserfssb, sizeof(reiserfssb)) != + sizeof(reiserfssb)) + goto io_error; + if (is_reiserfs_magic_string(&reiserfssb)) + type = "reiserfs"; + } + + if (!type) { + /* block 0 */ if (lseek(fd, 0, SEEK_SET) != 0 || read(fd, (char *) &xsb, sizeof(xsb)) != sizeof(xsb)) goto io_error; @@ -216,7 +259,7 @@ fstype(const char *device) { else if(!strncmp(xsb.xfsb.s_magic, XFS_SUPER_MAGIC, 4)) type = "xfs"; else if(!strncmp(xsb.qnx4fs_magic+4, "QNX4FS", 6)) - type = "qnx4fs"; + type = "qnx4"; else if(xsb.bfs_magic == 0x1badface) type = "bfs"; else if(!strncmp(xsb.ntfssb.s_magic, NTFS_SUPER_MAGIC, @@ -238,6 +281,24 @@ fstype(const char *device) { type = "vfat"; /* only guessing - might as well be fat or umsdos */ } + if (!type) { + /* sector 1 */ + if (lseek(fd, 512 , SEEK_SET) != 512 + || read(fd, (char *) &svsb, sizeof(svsb)) != sizeof(svsb)) + goto io_error; + if (sysvmagic(svsb) == SYSV_SUPER_MAGIC ) + type = "sysv"; + } + + if (!type) { + /* block 32 */ + if (lseek(fd, JFS_SUPER1_OFF, SEEK_SET) != JFS_SUPER1_OFF + || read(fd, (char *) &jfssb, sizeof(jfssb)) != sizeof(jfssb)) + goto io_error; + if (!strncmp(jfssb.s_magic, JFS_MAGIC, 4)) + type = "jfs"; + } + if (!type) { if (lseek(fd, 8192, SEEK_SET) != 8192 || read(fd, (char *) &ufssb, sizeof(ufssb)) != sizeof(ufssb)) @@ -395,7 +456,7 @@ procfsloop(int (*mount_fn)(struct mountargs *), struct mountargs *args, int errsv = 0; int i; - if (!strncmp(*types, "no", 2)) { + if (*types && !strncmp(*types, "no", 2)) { no = 1; notypes = (*types) + 2; } diff --git a/mount/mount_guess_rootdev.c b/mount/mount_guess_rootdev.c index 7246d319a..1c63cd7c1 100644 --- a/mount/mount_guess_rootdev.c +++ b/mount/mount_guess_rootdev.c @@ -69,15 +69,21 @@ char * mount_guess_rootdev() { FILE *cf; char line[1024]; - char *p; + char *p, *ret = NULL; cf = fopen(PROC_CMDLINE, "r"); - if (cf && fgets(line, sizeof(line), cf)) { - for (p = line; *p; p++) - if (!strncmp(p, " root=", 6)) - return rootdev(p+6); + if (cf) { + if (fgets(line, sizeof(line), cf)) { + for (p = line; *p; p++) { + if (!strncmp(p, " root=", 6)) { + ret = rootdev(p+6); + break; + } + } + } + fclose(cf); } - return NULL; + return ret; } #if 0 diff --git a/mount/nfs.5 b/mount/nfs.5 index b29a8bdb0..d2165b853 100644 --- a/mount/nfs.5 +++ b/mount/nfs.5 @@ -201,7 +201,7 @@ Do not use locking. Do not start lockd. .TP 1.5i .I tcp Mount the NFS filesystem using the TCP protocol instead of the -default UDP protocol. Many NFS severs only support UDP. +default UDP protocol. Many NFS servers only support UDP. .TP 1.5i .I udp Mount the NFS filesystem using the UDP protocol. This diff --git a/mount/nfsmount.c b/mount/nfsmount.c index d81c062e1..c0e27f0d4 100644 --- a/mount/nfsmount.c +++ b/mount/nfsmount.c @@ -132,9 +132,6 @@ get_mountport(struct sockaddr_in *server_addr, struct pmaplist *pmap; static struct pmap p = {0, 0, 0, 0}; - server_addr->sin_port = PMAPPORT; - pmap = pmap_getmaps(server_addr); - if (version > MAX_NFSPROT) version = MAX_NFSPROT; if (!prog) @@ -144,6 +141,9 @@ get_mountport(struct sockaddr_in *server_addr, p.pm_prot = proto; p.pm_port = port; + server_addr->sin_port = PMAPPORT; + pmap = pmap_getmaps(server_addr); + while (pmap) { if (pmap->pml_map.pm_prog != prog) goto next; @@ -163,10 +163,22 @@ get_mountport(struct sockaddr_in *server_addr, } if (!p.pm_vers) p.pm_vers = MOUNTVERS; - if (!p.pm_port) - p.pm_port = MOUNTPORT; if (!p.pm_prot) p.pm_prot = IPPROTO_TCP; +#if 0 + if (!p.pm_port) { + p.pm_port = pmap_getport(server_addr, p.pm_prog, p.pm_vers, + p.pm_prot); + } +#endif +#if 0 +#define MOUNTPORT 635 + /* HJLu wants to remove all traces of the old default port. + Are there still people running a mount RPC service on this + port without having a portmapper? */ + if (!p.pm_port) + p.pm_port = MOUNTPORT; +#endif return &p; } @@ -188,7 +200,7 @@ int nfsmount(const char *spec, const char *node, int *flags, struct hostent *hp; struct sockaddr_in server_addr; struct sockaddr_in mount_server_addr; - struct pmap* pm_mnt; + struct pmap *pm_mnt; int msock, fsock; struct timeval retry_timeout; union { @@ -576,7 +588,8 @@ int nfsmount(const char *spec, const char *node, int *flags, &msock); if (mclient) break; - mount_server_addr.sin_port = htons(pm_mnt->pm_port); + mount_server_addr.sin_port = + htons(pm_mnt->pm_port); msock = RPC_ANYSOCK; case IPPROTO_TCP: mclient = clnttcp_create(&mount_server_addr, diff --git a/mount/nfsmount.x b/mount/nfsmount.x index c27e74b7c..ad4bf9989 100644 --- a/mount/nfsmount.x +++ b/mount/nfsmount.x @@ -48,7 +48,6 @@ #endif %#include -const MOUNTPORT = 635; const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ const MNTNAMLEN = 255; /* maximum bytes in a name argument */ const FHSIZE = 32; /* size in bytes of a file handle */ diff --git a/mount/rpcsvc/nfsmount.h b/mount/rpcsvc/nfsmount.h index 55b5d8e7e..aa4a93bd0 100644 --- a/mount/rpcsvc/nfsmount.h +++ b/mount/rpcsvc/nfsmount.h @@ -50,7 +50,6 @@ extern "C" { #ifndef _rpcsvc_mount_h #define _rpcsvc_mount_h #include -#define MOUNTPORT 635 #define MNTPATHLEN 1024 #define MNTNAMLEN 255 #define FHSIZE 32 diff --git a/mount/rpcsvc/nfsmount.x b/mount/rpcsvc/nfsmount.x index c27e74b7c..ad4bf9989 100644 --- a/mount/rpcsvc/nfsmount.x +++ b/mount/rpcsvc/nfsmount.x @@ -48,7 +48,6 @@ #endif %#include -const MOUNTPORT = 635; const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ const MNTNAMLEN = 255; /* maximum bytes in a name argument */ const FHSIZE = 32; /* size in bytes of a file handle */ diff --git a/mount/sundries.c b/mount/sundries.c index 59b069678..621282cf5 100644 --- a/mount/sundries.c +++ b/mount/sundries.c @@ -193,7 +193,7 @@ matching_type (const char *type, const char *types) { char * canonicalize (const char *path) { char *canonical; - + if (path == NULL) return NULL; diff --git a/mount/swapon.c b/mount/swapon.c index b87a021ae..9f25fcbe7 100644 --- a/mount/swapon.c +++ b/mount/swapon.c @@ -158,9 +158,11 @@ display_summary(void) strerror (errsv)); return -1 ; } + while ( fgets(line, sizeof(line), swaps)) printf ("%s", line); + fclose(swaps); return 0 ; } diff --git a/mount/umount.8 b/mount/umount.8 index 0b67314c5..ecc1fa64b 100644 --- a/mount/umount.8 +++ b/mount/umount.8 @@ -29,15 +29,17 @@ umount \- unmount file systems .SH SYNOPSIS .BI "umount [\-hV]" .LP -.BI "umount -a [\-nrv] [\-t " vfstype ] +.BI "umount -a [\-dflnrv] [\-t " vfstype ] .br -.BI "umount [\-nrv] " "device " | " dir " [...] +.BI "umount [\-dflnrv] " "dir " | " device " [...] .SH DESCRIPTION The .B umount command detaches the file system(s) mentioned from the file hierarchy. -A file system is specified either by giving the directory where it -has been mounted, or by giving the special device on which it lives. +A file system is specified by giving the directory where it +has been mounted. Giving the special device on which the file system lives +may also work, but is obsolete, mainly because it will fail +in case this device was mounted on more than one directory. Note that a file system cannot be unmounted when it is `busy' - for example, when there are open files on it, or when some process @@ -46,6 +48,7 @@ The offending process could even be .B umount itself - it opens libc, and libc in its turn may open for example locale files. +A lazy unmount avoids this problem. Options for the .B umount @@ -90,6 +93,12 @@ to specify the file system types on which no action should be taken. .B \-f Force unmount (in case of an unreachable NFS system). (Requires kernel 2.1.116 or later.) +.TP +.B \-l +Lazy unmount. Detach the filesystem from the filesystem hierarchy now, +and cleanup all references to the filesystem as soon as it is not busy +anymore. +(Requires kernel 2.4.11 or later.) .SH "THE LOOP DEVICE" The @@ -101,7 +110,6 @@ or when the \-d option was given. Any pending loop devices can be freed using `losetup -d', see .BR losetup (8). - .SH FILES .I /etc/mtab table of mounted file systems diff --git a/mount/umount.c b/mount/umount.c index 92400875a..b2beb9acb 100644 --- a/mount/umount.c +++ b/mount/umount.c @@ -23,6 +23,8 @@ * in mtab, try them all, with last one tried first * - Differentiate "user" and "users" key words in fstab * 001202: aeb - remove at most one line from /etc/mtab + * 010914: Jamie Strandboge - use tcp if that was used for mount + * 011005: hch - add lazy umount support */ #include @@ -83,9 +85,16 @@ umount2(const char *path, int flags) { #endif /* MNT_FORCE */ +#if !defined(MNT_DETACH) +#define MNT_DETACH 2 +#endif + /* Nonzero for force umount (-f). There is kernel support since 2.1.116. */ int force = 0; +/* Nonzero for lazy umount (-l). There is kernel support since 2.4.11. */ +int lazy = 0; + /* When umount fails, attempt a read-only remount (-r). */ int remount = 0; @@ -171,10 +180,20 @@ nfs_umount_rpc_call(const char *spec, const char *opts) saddr.sin_port = htons(port); pertry.tv_sec = 3; pertry.tv_usec = 0; - if ((clp = clntudp_create(&saddr, MOUNTPROG, MOUNTVERS, - pertry, &so)) == NULL) { - clnt_pcreateerror("Cannot MOUNTPROG RPC"); - return (1); + if (opts && (p = strstr(opts, "tcp"))) { + /* possibly: make sure option is not "notcp" + possibly: try udp if tcp fails */ + if ((clp = clnttcp_create(&saddr, MOUNTPROG, MOUNTVERS, + &so, 0, 0)) == NULL) { + clnt_pcreateerror("Cannot MOUNTPROG RPC (tcp)"); + return 1; + } + } else { + if ((clp = clntudp_create(&saddr, MOUNTPROG, MOUNTVERS, + pertry, &so)) == NULL) { + clnt_pcreateerror("Cannot MOUNTPROG RPC"); + return 1; + } } clp->cl_auth = authunix_create_default(); try.tv_sec = 20; @@ -186,12 +205,12 @@ nfs_umount_rpc_call(const char *spec, const char *opts) if (clnt_stat != RPC_SUCCESS) { clnt_perror(clp, "Bad UMNT RPC"); - return (1); + return 1; } auth_destroy(clp->cl_auth); clnt_destroy(clp); - return (0); + return 0; } #endif /* HAVE_NFS */ @@ -248,13 +267,16 @@ umount_one (const char *spec, const char *node, const char *type, #endif umnt_err = umnt_err2 = 0; - if (force) { - /* completely untested; - 2.1.116 only has some support in nfs case */ - /* probably this won't work */ - int flags = MNT_FORCE; - - res = umount2 (node, flags); + if (lazy) { + res = umount2 (node, MNT_DETACH); + if (res < 0) { + complain(errno, node); + return 1; + } else + return 0; + } + if (force) { /* only supported for NFS */ + res = umount2 (node, MNT_FORCE); if (res == -1) { perror("umount2"); if (errno == ENOSYS) { @@ -570,7 +592,7 @@ main (int argc, char *argv[]) { bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); - while ((c = getopt_long (argc, argv, "adfhnrt:vV", + while ((c = getopt_long (argc, argv, "adfhlnrt:vV", longopts, NULL)) != EOF) switch (c) { case 'a': /* umount everything */ @@ -586,6 +608,9 @@ main (int argc, char *argv[]) { case 'h': /* help */ usage (stdout, 0); break; + case 'l': /* lazy umount */ + ++lazy; + break; case 'n': /* do not write in /etc/mtab */ ++nomtab; break; diff --git a/po/Makefile b/po/Makefile index afb21d9c9..15f38aad9 100644 --- a/po/Makefile +++ b/po/Makefile @@ -37,9 +37,9 @@ INCLUDES = -I.. -I$(INTL) COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) # Enter here all .po files -POFILES = cs.po da.po de.po es.po fr.po it.po ja.po nl.po pt_BR.po +POFILES = cs.po da.po de.po es.po fr.po it.po ja.po nl.po pt_BR.po sv.po tr.po # the same but with .gmo -GMOFILES = cs.gmo da.gmo de.gmo es.gmo fr.gmo it.gmo ja.gmo nl.gmo pt_BR.gmo +GMOFILES = cs.gmo da.gmo de.gmo es.gmo fr.gmo it.gmo ja.gmo nl.gmo pt_BR.gmo sv.gmo tr.gmo CATALOGS = $(GMOFILES) CATOBJEXT = .gmo diff --git a/po/POTFILES.in b/po/POTFILES.in index 31634f08d..8d0931c85 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -19,7 +19,6 @@ fdisk/i386_sys_types.c fdisk/llseek.c fdisk/partname.c fdisk/sfdisk.c -games/banner.c getopt-1.1.2/getopt.c hwclock/clock-ppc.c hwclock/cmos.c diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c index a4e5a8fb7..00206dcde 100644 --- a/po/cat-id-tbl.c +++ b/po/cat-id-tbl.c @@ -12,114 +12,116 @@ const struct _msg_ent _msg_tbl[] = { {"set read-write", 3}, {"get read-only", 4}, {"get sectorsize", 5}, - {"get size", 6}, - {"set readahead", 7}, - {"get readahead", 8}, - {"flush buffers", 9}, - {"reread partition table", 10}, - {"Usage: %s [-V] [-v|-q] commands devices\n", 11}, - {"Available commands:\n", 12}, - {"%s: Unknown command: %s\n", 13}, - {"%s requires an argument\n", 14}, - {"usage:\n", 15}, - {"Formatting ... ", 16}, - {"done\n", 17}, - {"Verifying ... ", 18}, - {"Read: ", 19}, - {"Problem reading cylinder %d, expected %d, read %d\n", 20}, + {"get blocksize", 6}, + {"set blocksize", 7}, + {"get size", 8}, + {"set readahead", 9}, + {"get readahead", 10}, + {"flush buffers", 11}, + {"reread partition table", 12}, + {"Usage: %s [-V] [-v|-q] commands devices\n", 13}, + {"Available commands:\n", 14}, + {"%s: Unknown command: %s\n", 15}, + {"%s requires an argument\n", 16}, + {"usage:\n", 17}, + {"Formatting ... ", 18}, + {"done\n", 19}, + {"Verifying ... ", 20}, + {"Read: ", 21}, + {"Problem reading cylinder %d, expected %d, read %d\n", 22}, {"\ bad data in cyl %d\n\ -Continuing ... ", 21}, - {"usage: %s [ -n ] device\n", 22}, - {"%s from %s\n", 23}, - {"%s: not a floppy device\n", 24}, - {"Could not determine current format type", 25}, - {"%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n", 26}, - {"Double", 27}, - {"Single", 28}, - {"Usage: %s [-larvsmf] /dev/name\n", 29}, - {"%s is mounted.\t ", 30}, - {"Do you really want to continue", 31}, - {"check aborted.\n", 32}, - {"Zone nr < FIRSTZONE in file `", 33}, - {"Zone nr >= ZONES in file `", 34}, - {"'.", 35}, - {"Remove block", 36}, - {"Read error: unable to seek to block in file '", 37}, - {"'\n", 38}, - {"Read error: bad block in file '", 39}, +Continuing ... ", 23}, + {"usage: %s [ -n ] device\n", 24}, + {"%s from %s\n", 25}, + {"%s: not a floppy device\n", 26}, + {"Could not determine current format type", 27}, + {"%s-sided, %d tracks, %d sec/track. Total capacity %d kB.\n", 28}, + {"Double", 29}, + {"Single", 30}, + {"Usage: %s [-larvsmf] /dev/name\n", 31}, + {"%s is mounted.\t ", 32}, + {"Do you really want to continue", 33}, + {"check aborted.\n", 34}, + {"Zone nr < FIRSTZONE in file `", 35}, + {"Zone nr >= ZONES in file `", 36}, + {"'.", 37}, + {"Remove block", 38}, + {"Read error: unable to seek to block in file '", 39}, + {"'\n", 40}, + {"Read error: bad block in file '", 41}, {"\ Internal error: trying to write bad block\n\ -Write request ignored\n", 40}, - {"seek failed in write_block", 41}, - {"Write error: bad block in file '", 42}, - {"seek failed in write_super_block", 43}, - {"unable to write super-block", 44}, - {"Unable to write inode map", 45}, - {"Unable to write zone map", 46}, - {"Unable to write inodes", 47}, - {"seek failed", 48}, - {"unable to read super block", 49}, - {"bad magic number in super-block", 50}, - {"Only 1k blocks/zones supported", 51}, - {"bad s_imap_blocks field in super-block", 52}, - {"bad s_zmap_blocks field in super-block", 53}, - {"Unable to allocate buffer for inode map", 54}, - {"Unable to allocate buffer for inodes", 55}, - {"Unable to allocate buffer for inode count", 56}, - {"Unable to allocate buffer for zone count", 57}, - {"Unable to read inode map", 58}, - {"Unable to read zone map", 59}, - {"Unable to read inodes", 60}, - {"Warning: Firstzone != Norm_firstzone\n", 61}, - {"%ld inodes\n", 62}, - {"%ld blocks\n", 63}, - {"Firstdatazone=%ld (%ld)\n", 64}, - {"Zonesize=%d\n", 65}, - {"Maxsize=%ld\n", 66}, - {"Filesystem state=%d\n", 67}, +Write request ignored\n", 42}, + {"seek failed in write_block", 43}, + {"Write error: bad block in file '", 44}, + {"seek failed in write_super_block", 45}, + {"unable to write super-block", 46}, + {"Unable to write inode map", 47}, + {"Unable to write zone map", 48}, + {"Unable to write inodes", 49}, + {"seek failed", 50}, + {"unable to read super block", 51}, + {"bad magic number in super-block", 52}, + {"Only 1k blocks/zones supported", 53}, + {"bad s_imap_blocks field in super-block", 54}, + {"bad s_zmap_blocks field in super-block", 55}, + {"Unable to allocate buffer for inode map", 56}, + {"Unable to allocate buffer for inodes", 57}, + {"Unable to allocate buffer for inode count", 58}, + {"Unable to allocate buffer for zone count", 59}, + {"Unable to read inode map", 60}, + {"Unable to read zone map", 61}, + {"Unable to read inodes", 62}, + {"Warning: Firstzone != Norm_firstzone\n", 63}, + {"%ld inodes\n", 64}, + {"%ld blocks\n", 65}, + {"Firstdatazone=%ld (%ld)\n", 66}, + {"Zonesize=%d\n", 67}, + {"Maxsize=%ld\n", 68}, + {"Filesystem state=%d\n", 69}, {"\ namelen=%d\n\ -\n", 68}, - {"Inode %d marked not used, but used for file '", 69}, - {"Mark in use", 70}, - {" has mode %05o\n", 71}, - {"Warning: inode count too big.\n", 72}, - {"root inode isn't a directory", 73}, - {"Block has been used before. Now in file `", 74}, - {"Clear", 75}, - {"Block %d in file `", 76}, - {"' is marked not in use.", 77}, - {"Correct", 78}, - {"The directory '", 79}, - {"' contains a bad inode number for file '%.*s'.", 80}, - {" Remove", 81}, - {": bad directory: '.' isn't first\n", 82}, - {": bad directory: '..' isn't second\n", 83}, - {"internal error", 84}, - {": bad directory: size < 32", 85}, - {"seek failed in bad_zone", 86}, - {"Inode %d mode not cleared.", 87}, - {"Inode %d not used, marked used in the bitmap.", 88}, - {"Inode %d used, marked unused in the bitmap.", 89}, - {"Inode %d (mode = %07o), i_nlinks=%d, counted=%d.", 90}, - {"Set i_nlinks to count", 91}, - {"Zone %d: marked in use, no file uses it.", 92}, - {"Unmark", 93}, - {"Zone %d: %sin use, counted=%d\n", 94}, - {"not ", 95}, - {"Set", 96}, - {"bad inode size", 97}, - {"bad v2 inode size", 98}, - {"need terminal for interactive repairs", 99}, - {"unable to open '%s'", 100}, - {"%s is clean, no check.\n", 101}, - {"Forcing filesystem check on %s.\n", 102}, - {"Filesystem on %s is dirty, needs checking.\n", 103}, +\n", 70}, + {"Inode %d marked not used, but used for file '", 71}, + {"Mark in use", 72}, + {" has mode %05o\n", 73}, + {"Warning: inode count too big.\n", 74}, + {"root inode isn't a directory", 75}, + {"Block has been used before. Now in file `", 76}, + {"Clear", 77}, + {"Block %d in file `", 78}, + {"' is marked not in use.", 79}, + {"Correct", 80}, + {"The directory '", 81}, + {"' contains a bad inode number for file '%.*s'.", 82}, + {" Remove", 83}, + {": bad directory: '.' isn't first\n", 84}, + {": bad directory: '..' isn't second\n", 85}, + {"internal error", 86}, + {": bad directory: size < 32", 87}, + {"seek failed in bad_zone", 88}, + {"Inode %d mode not cleared.", 89}, + {"Inode %d not used, marked used in the bitmap.", 90}, + {"Inode %d used, marked unused in the bitmap.", 91}, + {"Inode %d (mode = %07o), i_nlinks=%d, counted=%d.", 92}, + {"Set i_nlinks to count", 93}, + {"Zone %d: marked in use, no file uses it.", 94}, + {"Unmark", 95}, + {"Zone %d: in use, counted=%d\n", 96}, + {"Zone %d: not in use, counted=%d\n", 97}, + {"Set", 98}, + {"bad inode size", 99}, + {"bad v2 inode size", 100}, + {"need terminal for interactive repairs", 101}, + {"unable to open '%s'", 102}, + {"%s is clean, no check.\n", 103}, + {"Forcing filesystem check on %s.\n", 104}, + {"Filesystem on %s is dirty, needs checking.\n", 105}, {"\ \n\ -%6ld inodes used (%ld%%)\n", 104}, - {"%6ld zones used (%ld%%)\n", 105}, +%6ld inodes used (%ld%%)\n", 106}, + {"%6ld zones used (%ld%%)\n", 107}, {"\ \n\ %6d regular files\n\ @@ -129,307 +131,308 @@ namelen=%d\n\ %6d links\n\ %6d symbolic links\n\ ------\n\ -%6d files\n", 106}, +%6d files\n", 108}, {"\ ----------------------------\n\ FILE SYSTEM HAS BEEN CHANGED\n\ -----------------------------\n", 107}, - {"%s: failed to open: %s\n", 108}, - {"%s: seek error on %s\n", 109}, - {"%s: read error on %s\n", 110}, - {"sector count: %d, sector size: %d\n", 111}, - {"%s: option parse error\n", 112}, - {"Usage: %s [-x] [-d ] iso9660-image\n", 113}, +----------------------------\n", 109}, + {"%s: failed to open: %s\n", 110}, + {"%s: seek error on %s\n", 111}, + {"%s: read error on %s\n", 112}, + {"sector count: %d, sector size: %d\n", 113}, + {"%s: option parse error\n", 114}, + {"Usage: %s [-x] [-d ] iso9660-image\n", 115}, {"\ Usage: %s [-v] [-N nr-of-inodes] [-V volume-name]\n\ - [-F fsname] device [block-count]\n", 114}, - {"volume name too long", 115}, - {"fsname name too long", 116}, - {"cannot stat device %s", 117}, - {"%s is not a block special device", 118}, - {"cannot open %s", 119}, - {"cannot get size of %s", 120}, - {"blocks argument too large, max is %lu", 121}, - {"too many inodes - max is 512", 122}, - {"not enough space, need at least %lu blocks", 123}, - {"Device: %s\n", 124}, - {"Volume: <%-6s>\n", 125}, - {"FSname: <%-6s>\n", 126}, - {"BlockSize: %d\n", 127}, - {"Inodes: %d (in 1 block)\n", 128}, - {"Inodes: %d (in %ld blocks)\n", 129}, - {"Blocks: %ld\n", 130}, - {"Inode end: %d, Data end: %d\n", 131}, - {"error writing superblock", 132}, - {"error writing root inode", 133}, - {"error writing inode", 134}, - {"seek error", 135}, - {"error writing . entry", 136}, - {"error writing .. entry", 137}, - {"error closing %s", 138}, - {"Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n", 139}, - {"%s: Out of memory!\n", 140}, - {"mkfs version %s (%s)\n", 141}, - {"Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n", 142}, - {"%s is mounted; will not make a filesystem here!", 143}, - {"seek to boot block failed in write_tables", 144}, - {"unable to clear boot sector", 145}, - {"seek failed in write_tables", 146}, - {"unable to write inode map", 147}, - {"unable to write zone map", 148}, - {"unable to write inodes", 149}, - {"write failed in write_block", 150}, - {"too many bad blocks", 151}, - {"not enough good blocks", 152}, - {"unable to allocate buffers for maps", 153}, - {"unable to allocate buffer for inodes", 154}, + [-F fsname] device [block-count]\n", 116}, + {"volume name too long", 117}, + {"fsname name too long", 118}, + {"cannot stat device %s", 119}, + {"%s is not a block special device", 120}, + {"cannot open %s", 121}, + {"cannot get size of %s", 122}, + {"blocks argument too large, max is %lu", 123}, + {"too many inodes - max is 512", 124}, + {"not enough space, need at least %lu blocks", 125}, + {"Device: %s\n", 126}, + {"Volume: <%-6s>\n", 127}, + {"FSname: <%-6s>\n", 128}, + {"BlockSize: %d\n", 129}, + {"Inodes: %d (in 1 block)\n", 130}, + {"Inodes: %d (in %ld blocks)\n", 131}, + {"Blocks: %ld\n", 132}, + {"Inode end: %d, Data end: %d\n", 133}, + {"error writing superblock", 134}, + {"error writing root inode", 135}, + {"error writing inode", 136}, + {"seek error", 137}, + {"error writing . entry", 138}, + {"error writing .. entry", 139}, + {"error closing %s", 140}, + {"Usage: mkfs [-V] [-t fstype] [fs-options] device [size]\n", 141}, + {"%s: Out of memory!\n", 142}, + {"mkfs version %s (%s)\n", 143}, + {"Usage: %s [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]\n", 144}, + {"%s is mounted; will not make a filesystem here!", 145}, + {"seek to boot block failed in write_tables", 146}, + {"unable to clear boot sector", 147}, + {"seek failed in write_tables", 148}, + {"unable to write inode map", 149}, + {"unable to write zone map", 150}, + {"unable to write inodes", 151}, + {"write failed in write_block", 152}, + {"too many bad blocks", 153}, + {"not enough good blocks", 154}, + {"unable to allocate buffers for maps", 155}, + {"unable to allocate buffer for inodes", 156}, {"\ Maxsize=%ld\n\ -\n", 155}, - {"seek failed during testing of blocks", 156}, - {"Weird values in do_check: probably bugs\n", 157}, - {"seek failed in check_blocks", 158}, - {"bad blocks before data-area: cannot make fs", 159}, - {"%d bad blocks\n", 160}, - {"one bad block\n", 161}, - {"can't open file of bad blocks", 162}, - {"%s: not compiled with minix v2 support\n", 163}, - {"strtol error: number of blocks not specified", 164}, - {"unable to open %s", 165}, - {"unable to stat %s", 166}, - {"will not try to make filesystem on '%s'", 167}, - {"Bad user-specified page size %d\n", 168}, - {"Using user-specified page size %d, instead of the system values %d/%d\n", 169}, - {"Assuming pages of size %d (not %d)\n", 170}, - {"Usage: %s [-c] [-v0|-v1] [-pPAGESZ] /dev/name [blocks]\n", 171}, - {"too many bad pages", 172}, - {"Out of memory", 173}, - {"one bad page\n", 174}, - {"%d bad pages\n", 175}, - {"%s: error: Nowhere to set up swap on?\n", 176}, - {"%s: error: size %ld is larger than device size %d\n", 177}, - {"%s: error: unknown version %d\n", 178}, - {"%s: error: swap area needs to be at least %ldkB\n", 179}, - {"%s: warning: truncating swap area to %ldkB\n", 180}, - {"Will not try to make swapdevice on '%s'", 181}, - {"fatal: first page unreadable", 182}, +\n", 157}, + {"seek failed during testing of blocks", 158}, + {"Weird values in do_check: probably bugs\n", 159}, + {"seek failed in check_blocks", 160}, + {"bad blocks before data-area: cannot make fs", 161}, + {"%d bad blocks\n", 162}, + {"one bad block\n", 163}, + {"can't open file of bad blocks", 164}, + {"%s: not compiled with minix v2 support\n", 165}, + {"strtol error: number of blocks not specified", 166}, + {"unable to open %s", 167}, + {"unable to stat %s", 168}, + {"will not try to make filesystem on '%s'", 169}, + {"Bad user-specified page size %d\n", 170}, + {"Using user-specified page size %d, instead of the system values %d/%d\n", 171}, + {"Assuming pages of size %d (not %d)\n", 172}, + {"Usage: %s [-c] [-v0|-v1] [-pPAGESZ] /dev/name [blocks]\n", 173}, + {"too many bad pages", 174}, + {"Out of memory", 175}, + {"one bad page\n", 176}, + {"%d bad pages\n", 177}, + {"%s: error: Nowhere to set up swap on?\n", 178}, + {"%s: error: size %ld is larger than device size %d\n", 179}, + {"%s: error: unknown version %d\n", 180}, + {"%s: error: swap area needs to be at least %ldkB\n", 181}, + {"%s: warning: truncating swap area to %ldkB\n", 182}, + {"Will not try to make swapdevice on '%s'", 183}, + {"fatal: first page unreadable", 184}, {"\ %s: Device '%s' contains a valid Sun disklabel.\n\ This probably means creating v0 swap would destroy your partition table\n\ No swap created. If you really want to create swap v0 on that device, use\n\ -the -f option to force it.\n", 183}, - {"Unable to set up swap-space: unreadable", 184}, - {"Setting up swapspace version %d, size = %ld bytes\n", 185}, - {"unable to rewind swap-device", 186}, - {"unable to write signature page", 187}, - {"fsync failed", 188}, - {"Invalid number: %s\n", 189}, - {"Syntax error: '%s'\n", 190}, - {"No such parameter set: '%s'\n", 191}, - {"usage: %s [ -p ] dev name\n", 192}, - {"\ - %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n", 193}, - {" %s [ -c | -y | -n | -d ] dev\n", 194}, - {" %s [ -c | -y | -n ] dev\n", 195}, - {"Unusable", 196}, - {"Free Space", 197}, - {"Linux ext2", 198}, - {"Linux", 199}, - {"OS/2 HPFS", 200}, - {"OS/2 IFS", 201}, - {"NTFS", 202}, - {"Disk has been changed.\n", 203}, - {"Reboot the system to ensure the partition table is correctly updated.\n", 204}, +the -f option to force it.\n", 185}, + {"Unable to set up swap-space: unreadable", 186}, + {"Setting up swapspace version %d, size = %ld bytes\n", 187}, + {"unable to rewind swap-device", 188}, + {"unable to write signature page", 189}, + {"fsync failed", 190}, + {"Invalid number: %s\n", 191}, + {"Syntax error: '%s'\n", 192}, + {"No such parameter set: '%s'\n", 193}, + {" %s [ -p ] dev name\n", 194}, + {"\ + %s [ -p ] dev size sect heads tracks stretch gap rate spec1 fmt_gap\n", 195}, + {" %s [ -c | -y | -n | -d ] dev\n", 196}, + {" %s [ -c | -y | -n ] dev\n", 197}, + {"Unusable", 198}, + {"Free Space", 199}, + {"Linux ext2", 200}, + {"Linux XFS", 201}, + {"Linux", 202}, + {"OS/2 HPFS", 203}, + {"OS/2 IFS", 204}, + {"NTFS", 205}, + {"Disk has been changed.\n", 206}, + {"Reboot the system to ensure the partition table is correctly updated.\n", 207}, {"\ \n\ WARNING: If you have created or modified any\n\ DOS 6.x partitions, please see the cfdisk manual\n\ -page for additional information.\n", 205}, - {"FATAL ERROR", 206}, - {"Press any key to exit cfdisk", 207}, - {"Cannot seek on disk drive", 208}, - {"Cannot read disk drive", 209}, - {"Cannot write disk drive", 210}, - {"Too many partitions", 211}, - {"Partition begins before sector 0", 212}, - {"Partition ends before sector 0", 213}, - {"Partition begins after end-of-disk", 214}, - {"Partition ends after end-of-disk", 215}, - {"logical partitions not in disk order", 216}, - {"logical partitions overlap", 217}, - {"enlarged logical partitions overlap", 218}, - {"\ -!!!! Internal error creating logical drive with no extended partition !!!!", 219}, - {"\ -Cannot create logical drive here -- would create two extended partitions", 220}, - {"Menu item too long. Menu may look odd.", 221}, - {"Menu without direction. Defaulting horizontal.", 222}, - {"Illegal key", 223}, - {"Press a key to continue", 224}, - {"Primary", 225}, - {"Create a new primary partition", 226}, - {"Logical", 227}, - {"Create a new logical partition", 228}, - {"Cancel", 229}, - {"Don't create a partition", 230}, - {"!!! Internal error !!!", 231}, - {"Size (in MB): ", 232}, - {"Beginning", 233}, - {"Add partition at beginning of free space", 234}, - {"End", 235}, - {"Add partition at end of free space", 236}, - {"No room to create the extended partition", 237}, - {"No partition table or unknown signature on partition table", 238}, - {"Do you wish to start with a zero table [y/N] ?", 239}, - {"You specified more cylinders than fit on disk", 240}, - {"Cannot open disk drive", 241}, - {"Opened disk read-only - you have no permission to write", 242}, - {"Cannot get disk size", 243}, - {"Bad primary partition", 244}, - {"Bad logical partition", 245}, - {"Warning!! This may destroy data on your disk!", 246}, - {"Are you sure you want write the partition table to disk? (yes or no): ", 247}, - {"no", 248}, - {"Did not write partition table to disk", 249}, - {"yes", 250}, - {"Please enter `yes' or `no'", 251}, - {"Writing partition table to disk...", 252}, - {"Wrote partition table to disk", 253}, - {"\ -Wrote partition table, but re-read table failed. Reboot to update table.", 254}, - {"No primary partitions are marked bootable. DOS MBR cannot boot this.", 255}, - {"\ -More than one primary partition is marked bootable. DOS MBR cannot boot this.", 256}, - {"Enter filename or press RETURN to display on screen: ", 257}, - {"Cannot open file '%s'", 258}, - {"Disk Drive: %s\n", 259}, - {"Sector 0:\n", 260}, - {"Sector %d:\n", 261}, - {" None ", 262}, - {" Pri/Log", 263}, - {" Primary", 264}, - {" Logical", 265}, - {"Unknown", 266}, - {"Boot (%02X)", 267}, - {"Unknown (%02X)", 268}, - {"None (%02X)", 269}, - {"Partition Table for %s\n", 270}, - {" First Last\n", 271}, - {"\ - # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n", 272}, +page for additional information.\n", 208}, + {"FATAL ERROR", 209}, + {"Press any key to exit cfdisk", 210}, + {"Cannot seek on disk drive", 211}, + {"Cannot read disk drive", 212}, + {"Cannot write disk drive", 213}, + {"Too many partitions", 214}, + {"Partition begins before sector 0", 215}, + {"Partition ends before sector 0", 216}, + {"Partition begins after end-of-disk", 217}, + {"Partition ends after end-of-disk", 218}, + {"logical partitions not in disk order", 219}, + {"logical partitions overlap", 220}, + {"enlarged logical partitions overlap", 221}, + {"\ +!!!! Internal error creating logical drive with no extended partition !!!!", 222}, + {"\ +Cannot create logical drive here -- would create two extended partitions", 223}, + {"Menu item too long. Menu may look odd.", 224}, + {"Menu without direction. Defaulting horizontal.", 225}, + {"Illegal key", 226}, + {"Press a key to continue", 227}, + {"Primary", 228}, + {"Create a new primary partition", 229}, + {"Logical", 230}, + {"Create a new logical partition", 231}, + {"Cancel", 232}, + {"Don't create a partition", 233}, + {"!!! Internal error !!!", 234}, + {"Size (in MB): ", 235}, + {"Beginning", 236}, + {"Add partition at beginning of free space", 237}, + {"End", 238}, + {"Add partition at end of free space", 239}, + {"No room to create the extended partition", 240}, + {"No partition table or unknown signature on partition table", 241}, + {"Do you wish to start with a zero table [y/N] ?", 242}, + {"You specified more cylinders than fit on disk", 243}, + {"Cannot open disk drive", 244}, + {"Opened disk read-only - you have no permission to write", 245}, + {"Cannot get disk size", 246}, + {"Bad primary partition", 247}, + {"Bad logical partition", 248}, + {"Warning!! This may destroy data on your disk!", 249}, + {"Are you sure you want write the partition table to disk? (yes or no): ", 250}, + {"no", 251}, + {"Did not write partition table to disk", 252}, + {"yes", 253}, + {"Please enter `yes' or `no'", 254}, + {"Writing partition table to disk...", 255}, + {"Wrote partition table to disk", 256}, + {"\ +Wrote partition table, but re-read table failed. Reboot to update table.", 257}, + {"No primary partitions are marked bootable. DOS MBR cannot boot this.", 258}, + {"\ +More than one primary partition is marked bootable. DOS MBR cannot boot this.", 259}, + {"Enter filename or press RETURN to display on screen: ", 260}, + {"Cannot open file '%s'", 261}, + {"Disk Drive: %s\n", 262}, + {"Sector 0:\n", 263}, + {"Sector %d:\n", 264}, + {" None ", 265}, + {" Pri/Log", 266}, + {" Primary", 267}, + {" Logical", 268}, + {"Unknown", 269}, + {"Boot (%02X)", 270}, + {"Unknown (%02X)", 271}, + {"None (%02X)", 272}, + {"Partition Table for %s\n", 273}, + {" First Last\n", 274}, + {"\ + # Type Sector Sector Offset Length Filesystem Type (ID) Flags\n", 275}, {"\ -- ------- -------- --------- ------ --------- ---------------------- \ ----------\n", 273}, - {" ---Starting--- ----Ending---- Start Number of\n", 274}, - {" # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n", 275}, - {"-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n", 276}, - {"Raw", 277}, - {"Print the table using raw data format", 278}, - {"Sectors", 279}, - {"Print the table ordered by sectors", 280}, - {"Table", 281}, - {"Just print the partition table", 282}, - {"Don't print the table", 283}, - {"Help Screen for cfdisk", 284}, - {"This is cfdisk, a curses based disk partitioning program, which", 285}, - {"allows you to create, delete and modify partitions on your hard", 286}, - {"disk drive.", 287}, - {"Copyright (C) 1994-1999 Kevin E. Martin & aeb", 288}, - {"Command Meaning", 289}, - {"------- -------", 290}, - {" b Toggle bootable flag of the current partition", 291}, - {" d Delete the current partition", 292}, - {" g Change cylinders, heads, sectors-per-track parameters", 293}, - {" WARNING: This option should only be used by people who", 294}, - {" know what they are doing.", 295}, - {" h Print this screen", 296}, - {" m Maximize disk usage of the current partition", 297}, - {" Note: This may make the partition incompatible with", 298}, - {" DOS, OS/2, ...", 299}, - {" n Create new partition from free space", 300}, - {" p Print partition table to the screen or to a file", 301}, - {" There are several different formats for the partition", 302}, - {" that you can choose from:", 303}, - {" r - Raw data (exactly what would be written to disk)", 304}, - {" s - Table ordered by sectors", 305}, - {" t - Table in raw format", 306}, - {" q Quit program without writing partition table", 307}, - {" t Change the filesystem type", 308}, - {" u Change units of the partition size display", 309}, - {" Rotates through MB, sectors and cylinders", 310}, - {" W Write partition table to disk (must enter upper case W)", 311}, - {" Since this might destroy data on the disk, you must", 312}, - {" either confirm or deny the write by entering `yes' or", 313}, - {" `no'", 314}, - {"Up Arrow Move cursor to the previous partition", 315}, - {"Down Arrow Move cursor to the next partition", 316}, - {"CTRL-L Redraws the screen", 317}, - {" ? Print this screen", 318}, - {"Note: All of the commands can be entered with either upper or lower", 319}, - {"case letters (except for Writes).", 320}, - {"Cylinders", 321}, - {"Change cylinder geometry", 322}, - {"Heads", 323}, - {"Change head geometry", 324}, - {"Change sector geometry", 325}, - {"Done", 326}, - {"Done with changing geometry", 327}, - {"Enter the number of cylinders: ", 328}, - {"Illegal cylinders value", 329}, - {"Enter the number of heads: ", 330}, - {"Illegal heads value", 331}, - {"Enter the number of sectors per track: ", 332}, - {"Illegal sectors value", 333}, - {"Enter filesystem type: ", 334}, - {"Cannot change FS Type to empty", 335}, - {"Cannot change FS Type to extended", 336}, - {"Boot", 337}, - {"Unk(%02X)", 338}, - {", NC", 339}, - {"NC", 340}, - {"Pri/Log", 341}, - {"Disk Drive: %s", 342}, - {"Size: %lld bytes", 343}, - {"Heads: %d Sectors per Track: %d Cylinders: %d", 344}, - {"Name", 345}, - {"Flags", 346}, - {"Part Type", 347}, - {"FS Type", 348}, - {"[Label]", 349}, - {" Sectors", 350}, - {"Size (MB)", 351}, - {"Size (GB)", 352}, - {"Bootable", 353}, - {"Toggle bootable flag of the current partition", 354}, - {"Delete", 355}, - {"Delete the current partition", 356}, - {"Geometry", 357}, - {"Change disk geometry (experts only)", 358}, - {"Help", 359}, - {"Print help screen", 360}, - {"Maximize", 361}, - {"Maximize disk usage of the current partition (experts only)", 362}, - {"New", 363}, - {"Create new partition from free space", 364}, - {"Print", 365}, - {"Print partition table to the screen or to a file", 366}, - {"Quit", 367}, - {"Quit program without writing partition table", 368}, - {"Type", 369}, - {"Change the filesystem type (DOS, Linux, OS/2 and so on)", 370}, - {"Units", 371}, - {"Change units of the partition size display (MB, sect, cyl)", 372}, - {"Write", 373}, - {"Write partition table to disk (this might destroy data)", 374}, - {"Cannot make this partition bootable", 375}, - {"Cannot delete an empty partition", 376}, - {"Cannot maximize this partition", 377}, - {"This partition is unusable", 378}, - {"This partition is already in use", 379}, - {"Cannot change the type of an empty partition", 380}, - {"No more partitions", 381}, - {"Illegal command", 382}, - {"Copyright (C) 1994-2000 Kevin E. Martin & aeb\n", 383}, +---------\n", 276}, + {" ---Starting--- ----Ending---- Start Number of\n", 277}, + {" # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors\n", 278}, + {"-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------\n", 279}, + {"Raw", 280}, + {"Print the table using raw data format", 281}, + {"Sectors", 282}, + {"Print the table ordered by sectors", 283}, + {"Table", 284}, + {"Just print the partition table", 285}, + {"Don't print the table", 286}, + {"Help Screen for cfdisk", 287}, + {"This is cfdisk, a curses based disk partitioning program, which", 288}, + {"allows you to create, delete and modify partitions on your hard", 289}, + {"disk drive.", 290}, + {"Copyright (C) 1994-1999 Kevin E. Martin & aeb", 291}, + {"Command Meaning", 292}, + {"------- -------", 293}, + {" b Toggle bootable flag of the current partition", 294}, + {" d Delete the current partition", 295}, + {" g Change cylinders, heads, sectors-per-track parameters", 296}, + {" WARNING: This option should only be used by people who", 297}, + {" know what they are doing.", 298}, + {" h Print this screen", 299}, + {" m Maximize disk usage of the current partition", 300}, + {" Note: This may make the partition incompatible with", 301}, + {" DOS, OS/2, ...", 302}, + {" n Create new partition from free space", 303}, + {" p Print partition table to the screen or to a file", 304}, + {" There are several different formats for the partition", 305}, + {" that you can choose from:", 306}, + {" r - Raw data (exactly what would be written to disk)", 307}, + {" s - Table ordered by sectors", 308}, + {" t - Table in raw format", 309}, + {" q Quit program without writing partition table", 310}, + {" t Change the filesystem type", 311}, + {" u Change units of the partition size display", 312}, + {" Rotates through MB, sectors and cylinders", 313}, + {" W Write partition table to disk (must enter upper case W)", 314}, + {" Since this might destroy data on the disk, you must", 315}, + {" either confirm or deny the write by entering `yes' or", 316}, + {" `no'", 317}, + {"Up Arrow Move cursor to the previous partition", 318}, + {"Down Arrow Move cursor to the next partition", 319}, + {"CTRL-L Redraws the screen", 320}, + {" ? Print this screen", 321}, + {"Note: All of the commands can be entered with either upper or lower", 322}, + {"case letters (except for Writes).", 323}, + {"Cylinders", 324}, + {"Change cylinder geometry", 325}, + {"Heads", 326}, + {"Change head geometry", 327}, + {"Change sector geometry", 328}, + {"Done", 329}, + {"Done with changing geometry", 330}, + {"Enter the number of cylinders: ", 331}, + {"Illegal cylinders value", 332}, + {"Enter the number of heads: ", 333}, + {"Illegal heads value", 334}, + {"Enter the number of sectors per track: ", 335}, + {"Illegal sectors value", 336}, + {"Enter filesystem type: ", 337}, + {"Cannot change FS Type to empty", 338}, + {"Cannot change FS Type to extended", 339}, + {"Boot", 340}, + {"Unk(%02X)", 341}, + {", NC", 342}, + {"NC", 343}, + {"Pri/Log", 344}, + {"Disk Drive: %s", 345}, + {"Size: %lld bytes", 346}, + {"Heads: %d Sectors per Track: %d Cylinders: %d", 347}, + {"Name", 348}, + {"Flags", 349}, + {"Part Type", 350}, + {"FS Type", 351}, + {"[Label]", 352}, + {" Sectors", 353}, + {"Size (MB)", 354}, + {"Size (GB)", 355}, + {"Bootable", 356}, + {"Toggle bootable flag of the current partition", 357}, + {"Delete", 358}, + {"Delete the current partition", 359}, + {"Geometry", 360}, + {"Change disk geometry (experts only)", 361}, + {"Help", 362}, + {"Print help screen", 363}, + {"Maximize", 364}, + {"Maximize disk usage of the current partition (experts only)", 365}, + {"New", 366}, + {"Create new partition from free space", 367}, + {"Print", 368}, + {"Print partition table to the screen or to a file", 369}, + {"Quit", 370}, + {"Quit program without writing partition table", 371}, + {"Type", 372}, + {"Change the filesystem type (DOS, Linux, OS/2 and so on)", 373}, + {"Units", 374}, + {"Change units of the partition size display (MB, sect, cyl)", 375}, + {"Write", 376}, + {"Write partition table to disk (this might destroy data)", 377}, + {"Cannot make this partition bootable", 378}, + {"Cannot delete an empty partition", 379}, + {"Cannot maximize this partition", 380}, + {"This partition is unusable", 381}, + {"This partition is already in use", 382}, + {"Cannot change the type of an empty partition", 383}, + {"No more partitions", 384}, + {"Illegal command", 385}, + {"Copyright (C) 1994-2000 Kevin E. Martin & aeb\n", 386}, {"\ \n\ Usage:\n\ @@ -445,7 +448,7 @@ Options:\n\ -z: Start with a zero partition table, instead of reading the pt from disk;\n\ -c C -h H -s S: Override the kernel's idea of the number of cylinders,\n\ the number of heads and the number of sectors/track.\n\ -\n", 384}, +\n", 387}, {"\ Usage: fdisk [-b SSZ] [-u] DISK Change partition table\n\ fdisk -l [-b SSZ] [-u] DISK List partition table(s)\n\ @@ -454,65 +457,65 @@ Usage: fdisk [-b SSZ] [-u] DISK Change partition table\n\ Here DISK is something like /dev/hdb or /dev/sda\n\ and PARTITION is something like /dev/hda7\n\ -u: give Start and End in sector (instead of cylinder) units\n\ --b 2048: (for certain MO drives) use 2048-byte sectors\n", 385}, +-b 2048: (for certain MO disks) use 2048-byte sectors\n", 388}, {"\ Usage: fdisk [-l] [-b SSZ] [-u] device\n\ E.g.: fdisk /dev/hda (for the first IDE disk)\n\ or: fdisk /dev/sdc (for the third SCSI disk)\n\ or: fdisk /dev/eda (for the first PS/2 ESDI drive)\n\ or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)\n\ - ...\n", 386}, - {"Unable to open %s\n", 387}, - {"Unable to read %s\n", 388}, - {"Unable to seek on %s\n", 389}, - {"Unable to write %s\n", 390}, - {"BLKGETSIZE ioctl failed on %s\n", 391}, - {"Unable to allocate any more memory\n", 392}, - {"Fatal error\n", 393}, - {"Command action", 394}, - {" a toggle a read only flag", 395}, - {" b edit bsd disklabel", 396}, - {" c toggle the mountable flag", 397}, - {" d delete a partition", 398}, - {" l list known partition types", 399}, - {" m print this menu", 400}, - {" n add a new partition", 401}, - {" o create a new empty DOS partition table", 402}, - {" p print the partition table", 403}, - {" q quit without saving changes", 404}, - {" s create a new empty Sun disklabel", 405}, - {" t change a partition's system id", 406}, - {" u change display/entry units", 407}, - {" v verify the partition table", 408}, - {" w write table to disk and exit", 409}, - {" x extra functionality (experts only)", 410}, - {" a select bootable partition", 411}, - {" b edit bootfile entry", 412}, - {" c select sgi swap partition", 413}, - {" a toggle a bootable flag", 414}, - {" c toggle the dos compatibility flag", 415}, - {" a change number of alternate cylinders", 416}, - {" c change number of cylinders", 417}, - {" d print the raw data in the partition table", 418}, - {" e change number of extra sectors per cylinder", 419}, - {" h change number of heads", 420}, - {" i change interleave factor", 421}, - {" o change rotation speed (rpm)", 422}, - {" r return to main menu", 423}, - {" s change number of sectors/track", 424}, - {" y change number of physical cylinders", 425}, - {" b move beginning of data in a partition", 426}, - {" e list extended partitions", 427}, - {" g create an IRIX partition table", 428}, - {" f fix partition order", 429}, - {"You must set", 430}, - {"heads", 431}, - {"sectors", 432}, - {"cylinders", 433}, + ...\n", 389}, + {"Unable to open %s\n", 390}, + {"Unable to read %s\n", 391}, + {"Unable to seek on %s\n", 392}, + {"Unable to write %s\n", 393}, + {"BLKGETSIZE ioctl failed on %s\n", 394}, + {"Unable to allocate any more memory\n", 395}, + {"Fatal error\n", 396}, + {"Command action", 397}, + {" a toggle a read only flag", 398}, + {" b edit bsd disklabel", 399}, + {" c toggle the mountable flag", 400}, + {" d delete a partition", 401}, + {" l list known partition types", 402}, + {" m print this menu", 403}, + {" n add a new partition", 404}, + {" o create a new empty DOS partition table", 405}, + {" p print the partition table", 406}, + {" q quit without saving changes", 407}, + {" s create a new empty Sun disklabel", 408}, + {" t change a partition's system id", 409}, + {" u change display/entry units", 410}, + {" v verify the partition table", 411}, + {" w write table to disk and exit", 412}, + {" x extra functionality (experts only)", 413}, + {" a select bootable partition", 414}, + {" b edit bootfile entry", 415}, + {" c select sgi swap partition", 416}, + {" a toggle a bootable flag", 417}, + {" c toggle the dos compatibility flag", 418}, + {" a change number of alternate cylinders", 419}, + {" c change number of cylinders", 420}, + {" d print the raw data in the partition table", 421}, + {" e change number of extra sectors per cylinder", 422}, + {" h change number of heads", 423}, + {" i change interleave factor", 424}, + {" o change rotation speed (rpm)", 425}, + {" r return to main menu", 426}, + {" s change number of sectors/track", 427}, + {" y change number of physical cylinders", 428}, + {" b move beginning of data in a partition", 429}, + {" e list extended partitions", 430}, + {" g create an IRIX (SGI) partition table", 431}, + {" f fix partition order", 432}, + {"You must set", 433}, + {"heads", 434}, + {"sectors", 435}, + {"cylinders", 436}, {"\ %s%s.\n\ -You can do this from the extra functions menu.\n", 434}, - {" and ", 435}, +You can do this from the extra functions menu.\n", 437}, + {" and ", 438}, {"\ \n\ The number of cylinders for this disk is set to %d.\n\ @@ -520,151 +523,158 @@ There is nothing wrong with that, but this is larger than 1024,\n\ and could in certain setups cause problems with:\n\ 1) software that runs at boot time (e.g., old versions of LILO)\n\ 2) booting and partitioning software from other OSs\n\ - (e.g., DOS FDISK, OS/2 FDISK)\n", 436}, - {"Bad offset in primary extended partition\n", 437}, - {"Warning: deleting partitions after %d\n", 438}, - {"Warning: extra link pointer in partition table %d\n", 439}, - {"Warning: ignoring extra data in partition table %d\n", 440}, + (e.g., DOS FDISK, OS/2 FDISK)\n", 439}, + {"Bad offset in primary extended partition\n", 440}, + {"Warning: deleting partitions after %d\n", 441}, + {"Warning: extra link pointer in partition table %d\n", 442}, + {"Warning: ignoring extra data in partition table %d\n", 443}, {"\ Building a new DOS disklabel. Changes will remain in memory only,\n\ until you decide to write them. After that, of course, the previous\n\ content won't be recoverable.\n\ -\n", 441}, - {"Note: sector size is %d (not %d)\n", 442}, - {"You will not be able to write the partition table.\n", 443}, +\n", 444}, + {"Note: sector size is %d (not %d)\n", 445}, + {"You will not be able to write the partition table.\n", 446}, {"\ Device contains neither a valid DOS partition table, nor Sun, SGI or OSF \ -disklabel\n", 444}, - {"Internal error\n", 445}, - {"Ignoring extra extended partition %d\n", 446}, +disklabel\n", 447}, + {"Internal error\n", 448}, + {"Ignoring extra extended partition %d\n", 449}, {"\ -Warning: invalid flag 0x%04x of partition table %d will be corrected by \ -w(rite)\n", 447}, +Warning: invalid flag 0x%04x of partition table %d will be corrected by w\ +(rite)\n", 450}, {"\ \n\ -got EOF thrice - exiting..\n", 448}, - {"Hex code (type L to list codes): ", 449}, - {"%s (%d-%d, default %d): ", 450}, - {"Using default value %d\n", 451}, - {"Value out of range.\n", 452}, - {"Partition number", 453}, - {"Warning: partition %d has empty type\n", 454}, - {"cylinder", 455}, - {"sector", 456}, - {"Changing display/entry units to %s\n", 457}, - {"WARNING: Partition %d is an extended partition\n", 458}, - {"DOS Compatibility flag is set\n", 459}, - {"DOS Compatibility flag is not set\n", 460}, - {"Partition %d does not exist yet!\n", 461}, +got EOF thrice - exiting..\n", 451}, + {"Hex code (type L to list codes): ", 452}, + {"%s (%d-%d, default %d): ", 453}, + {"Using default value %d\n", 454}, + {"Value out of range.\n", 455}, + {"Partition number", 456}, + {"Warning: partition %d has empty type\n", 457}, + {"cylinder", 458}, + {"sector", 459}, + {"Changing display/entry units to %s\n", 460}, + {"WARNING: Partition %d is an extended partition\n", 461}, + {"DOS Compatibility flag is set\n", 462}, + {"DOS Compatibility flag is not set\n", 463}, + {"Partition %d does not exist yet!\n", 464}, {"\ Type 0 means free space to many systems\n\ (but not to Linux). Having partitions of\n\ type 0 is probably unwise. You can delete\n\ -a partition using the `d' command.\n", 462}, +a partition using the `d' command.\n", 465}, {"\ You cannot change a partition into an extended one or vice versa\n\ -Delete it first.\n", 463}, +Delete it first.\n", 466}, {"\ Consider leaving partition 3 as Whole disk (5),\n\ as SunOS/Solaris expects it and even Linux likes it.\n\ -\n", 464}, +\n", 467}, {"\ Consider leaving partition 9 as volume header (0),\n\ and partition 11 as entire volume (6)as IRIX expects it.\n\ -\n", 465}, - {"Changed system type of partition %d to %x (%s)\n", 466}, - {"Partition %d has different physical/logical beginnings (non-Linux?):\n", 467}, - {" phys=(%d, %d, %d) ", 468}, - {"logical=(%d, %d, %d)\n", 469}, - {"Partition %d has different physical/logical endings:\n", 470}, - {"Partition %i does not start on cylinder boundary:\n", 471}, - {"should be (%d, %d, 1)\n", 472}, - {"Partition %i does not end on cylinder boundary:\n", 473}, - {"should be (%d, %d, %d)\n", 474}, +\n", 468}, + {"Changed system type of partition %d to %x (%s)\n", 469}, + {"Partition %d has different physical/logical beginnings (non-Linux?):\n", 470}, + {" phys=(%d, %d, %d) ", 471}, + {"logical=(%d, %d, %d)\n", 472}, + {"Partition %d has different physical/logical endings:\n", 473}, + {"Partition %i does not start on cylinder boundary:\n", 474}, + {"should be (%d, %d, 1)\n", 475}, + {"Partition %i does not end on cylinder boundary:\n", 476}, + {"should be (%d, %d, %d)\n", 477}, {"\ \n\ Disk %s: %d heads, %d sectors, %d cylinders\n\ Units = %s of %d * %d bytes\n\ -\n", 475}, +\n", 478}, {"\ Nothing to do. Ordering is correct already.\n\ -\n", 476}, - {"%*s Boot Start End Blocks Id System\n", 477}, - {"Device", 478}, +\n", 479}, + {"%*s Boot Start End Blocks Id System\n", 480}, + {"Device", 481}, {"\ \n\ -Partition table entries are not in disk order\n", 479}, +Partition table entries are not in disk order\n", 482}, {"\ \n\ Disk %s: %d heads, %d sectors, %d cylinders\n\ -\n", 480}, - {"Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n", 481}, - {"Warning: partition %d contains sector 0\n", 482}, - {"Partition %d: head %d greater than maximum %d\n", 483}, - {"Partition %d: sector %d greater than maximum %d\n", 484}, - {"Partitions %d: cylinder %d greater than maximum %d\n", 485}, - {"Partition %d: previous sectors %d disagrees with total %d\n", 486}, - {"Warning: bad start-of-data in partition %d\n", 487}, - {"Warning: partition %d overlaps partition %d.\n", 488}, - {"Warning: partition %d is empty\n", 489}, - {"Logical partition %d not entirely in partition %d\n", 490}, - {"Total allocated sectors %d greater than the maximum %d\n", 491}, - {"%d unallocated sectors\n", 492}, - {"Partition %d is already defined. Delete it before re-adding it.\n", 493}, - {"First %s", 494}, - {"Sector %d is already allocated\n", 495}, - {"No free sectors available\n", 496}, - {"Last %s or +size or +sizeM or +sizeK", 497}, - {"The maximum number of partitions has been created\n", 498}, - {"You must delete some partition and add an extended partition first\n", 499}, +\n", 483}, + {"Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n", 484}, + {"Warning: partition %d contains sector 0\n", 485}, + {"Partition %d: head %d greater than maximum %d\n", 486}, + {"Partition %d: sector %d greater than maximum %d\n", 487}, + {"Partitions %d: cylinder %d greater than maximum %d\n", 488}, + {"Partition %d: previous sectors %d disagrees with total %d\n", 489}, + {"Warning: bad start-of-data in partition %d\n", 490}, + {"Warning: partition %d overlaps partition %d.\n", 491}, + {"Warning: partition %d is empty\n", 492}, + {"Logical partition %d not entirely in partition %d\n", 493}, + {"Total allocated sectors %d greater than the maximum %d\n", 494}, + {"%d unallocated sectors\n", 495}, + {"Partition %d is already defined. Delete it before re-adding it.\n", 496}, + {"First %s", 497}, + {"Sector %d is already allocated\n", 498}, + {"No free sectors available\n", 499}, + {"Last %s or +size or +sizeM or +sizeK", 500}, + {"\ +\tSorry - this fdisk cannot handle AIX disk labels.\n\ +\tIf you want to add DOS-type partitions, create\n\ +\ta new empty DOS partition table first. (Use o.)\n\ +\tWARNING: This will destroy the present disk contents.\n", 501}, + {"The maximum number of partitions has been created\n", 502}, + {"You must delete some partition and add an extended partition first\n", 503}, {"\ Command action\n\ %s\n\ - p primary partition (1-4)\n", 500}, - {"l logical (5 or over)", 501}, - {"e extended", 502}, - {"Invalid partition number for type `%c'\n", 503}, + p primary partition (1-4)\n", 504}, + {"l logical (5 or over)", 505}, + {"e extended", 506}, + {"Invalid partition number for type `%c'\n", 507}, {"\ The partition table has been altered!\n\ -\n", 504}, - {"Calling ioctl() to re-read partition table.\n", 505}, +\n", 508}, + {"Calling ioctl() to re-read partition table.\n", 509}, {"\ -Re-read table failed with error %d: %s.\n\ -Reboot your system to ensure the partition table is updated.\n", 506}, +\n\ +WARNING: Re-reading the partition table failed with error %d: %s.\n\ +The kernel still uses the old table.\n\ +The new table will be used at the next reboot.\n", 510}, {"\ \n\ WARNING: If you have created or modified any DOS 6.x\n\ partitions, please see the fdisk manual page for additional\n\ -information.\n", 507}, - {"Syncing disks.\n", 508}, - {"Partition %d has no data area\n", 509}, - {"New beginning of data", 510}, - {"Expert command (m for help): ", 511}, - {"Number of cylinders", 512}, - {"Number of heads", 513}, - {"Number of sectors", 514}, - {"Warning: setting sector offset for DOS compatiblity\n", 515}, - {"Disk %s doesn't contain a valid partition table\n", 516}, - {"Cannot open %s\n", 517}, - {"cannot open %s\n", 518}, - {"%c: unknown command\n", 519}, - {"This kernel finds the sector size itself - -b option ignored\n", 520}, +information.\n", 511}, + {"Syncing disks.\n", 512}, + {"Partition %d has no data area\n", 513}, + {"New beginning of data", 514}, + {"Expert command (m for help): ", 515}, + {"Number of cylinders", 516}, + {"Number of heads", 517}, + {"Number of sectors", 518}, + {"Warning: setting sector offset for DOS compatiblity\n", 519}, + {"Disk %s doesn't contain a valid partition table\n", 520}, + {"Cannot open %s\n", 521}, + {"cannot open %s\n", 522}, + {"%c: unknown command\n", 523}, + {"This kernel finds the sector size itself - -b option ignored\n", 524}, {"\ Warning: the -b (set sector size) option should be used with one specified \ -device\n", 521}, +device\n", 525}, {"\ Detected an OSF/1 disklabel on %s, entering disklabel mode.\n\ -To return to DOS partition table mode, use the 'r' command.\n", 522}, - {"Command (m for help): ", 523}, +To return to DOS partition table mode, use the 'r' command.\n", 526}, + {"Command (m for help): ", 527}, {"\ \n\ -The current boot file is: %s\n", 524}, - {"Please enter the name of the new boot file: ", 525}, - {"Boot file unchanged\n", 526}, +The current boot file is: %s\n", 528}, + {"Please enter the name of the new boot file: ", 529}, + {"Boot file unchanged\n", 530}, {"\ \n\ \tSorry, no experts menu for SGI partition tables available.\n\ -\n", 527}, +\n", 531}, {"\ \n\ \tThere is a valid AIX label on this disk.\n\ @@ -677,94 +687,94 @@ The current boot file is: %s\n", 524}, \t erase the other disks as well, if unmirrored.)\n\ \t3. Before deleting this physical volume be sure\n\ \t to remove the disk logically from your AIX\n\ -\t machine. (Otherwise you become an AIXpert).", 528}, +\t machine. (Otherwise you become an AIXpert).", 532}, {"\ \n\ -BSD label for device: %s\n", 529}, - {" d delete a BSD partition", 530}, - {" e edit drive data", 531}, - {" i install bootstrap", 532}, - {" l list known filesystem types", 533}, - {" n add a new BSD partition", 534}, - {" p print BSD partition table", 535}, - {" s show complete disklabel", 536}, - {" t change a partition's filesystem id", 537}, - {" u change units (cylinders/sectors)", 538}, - {" w write disklabel to disk", 539}, - {" x link BSD partition to non-BSD partition", 540}, - {"Partition %s has invalid starting sector 0.\n", 541}, - {"Reading disklabel of %s at sector %d.\n", 542}, - {"There is no *BSD partition on %s.\n", 543}, - {"BSD disklabel command (m for help): ", 544}, - {"type: %s\n", 545}, - {"type: %d\n", 546}, - {"disk: %.*s\n", 547}, - {"label: %.*s\n", 548}, - {"flags:", 549}, - {" removable", 550}, - {" ecc", 551}, - {" badsect", 552}, - {"bytes/sector: %ld\n", 553}, - {"sectors/track: %ld\n", 554}, - {"tracks/cylinder: %ld\n", 555}, - {"sectors/cylinder: %ld\n", 556}, - {"cylinders: %ld\n", 557}, - {"rpm: %d\n", 558}, - {"interleave: %d\n", 559}, - {"trackskew: %d\n", 560}, - {"cylinderskew: %d\n", 561}, - {"headswitch: %ld\t\t# milliseconds\n", 562}, - {"track-to-track seek: %ld\t# milliseconds\n", 563}, - {"drivedata: ", 564}, +BSD label for device: %s\n", 533}, + {" d delete a BSD partition", 534}, + {" e edit drive data", 535}, + {" i install bootstrap", 536}, + {" l list known filesystem types", 537}, + {" n add a new BSD partition", 538}, + {" p print BSD partition table", 539}, + {" s show complete disklabel", 540}, + {" t change a partition's filesystem id", 541}, + {" u change units (cylinders/sectors)", 542}, + {" w write disklabel to disk", 543}, + {" x link BSD partition to non-BSD partition", 544}, + {"Partition %s has invalid starting sector 0.\n", 545}, + {"Reading disklabel of %s at sector %d.\n", 546}, + {"There is no *BSD partition on %s.\n", 547}, + {"BSD disklabel command (m for help): ", 548}, + {"type: %s\n", 549}, + {"type: %d\n", 550}, + {"disk: %.*s\n", 551}, + {"label: %.*s\n", 552}, + {"flags:", 553}, + {" removable", 554}, + {" ecc", 555}, + {" badsect", 556}, + {"bytes/sector: %ld\n", 557}, + {"sectors/track: %ld\n", 558}, + {"tracks/cylinder: %ld\n", 559}, + {"sectors/cylinder: %ld\n", 560}, + {"cylinders: %ld\n", 561}, + {"rpm: %d\n", 562}, + {"interleave: %d\n", 563}, + {"trackskew: %d\n", 564}, + {"cylinderskew: %d\n", 565}, + {"headswitch: %ld\t\t# milliseconds\n", 566}, + {"track-to-track seek: %ld\t# milliseconds\n", 567}, + {"drivedata: ", 568}, {"\ \n\ -%d partitions:\n", 565}, - {"# start end size fstype [fsize bsize cpg]\n", 566}, - {"Writing disklabel to %s.\n", 567}, - {"%s contains no disklabel.\n", 568}, - {"Do you want to create a disklabel? (y/n) ", 569}, - {"bytes/sector", 570}, - {"sectors/track", 571}, - {"tracks/cylinder", 572}, - {"sectors/cylinder", 573}, - {"Must be <= sectors/track * tracks/cylinder (default).\n", 574}, - {"rpm", 575}, - {"interleave", 576}, - {"trackskew", 577}, - {"cylinderskew", 578}, - {"headswitch", 579}, - {"track-to-track seek", 580}, - {"Bootstrap: %sboot -> boot%s (%s): ", 581}, - {"Bootstrap overlaps with disk label!\n", 582}, - {"Bootstrap installed on %s.\n", 583}, - {"Partition (a-%c): ", 584}, - {"This partition already exists.\n", 585}, - {"Warning: too many partitions (%d, maximum is %d).\n", 586}, +%d partitions:\n", 569}, + {"# start end size fstype [fsize bsize cpg]\n", 570}, + {"Writing disklabel to %s.\n", 571}, + {"%s contains no disklabel.\n", 572}, + {"Do you want to create a disklabel? (y/n) ", 573}, + {"bytes/sector", 574}, + {"sectors/track", 575}, + {"tracks/cylinder", 576}, + {"sectors/cylinder", 577}, + {"Must be <= sectors/track * tracks/cylinder (default).\n", 578}, + {"rpm", 579}, + {"interleave", 580}, + {"trackskew", 581}, + {"cylinderskew", 582}, + {"headswitch", 583}, + {"track-to-track seek", 584}, + {"Bootstrap: %sboot -> boot%s (%s): ", 585}, + {"Bootstrap overlaps with disk label!\n", 586}, + {"Bootstrap installed on %s.\n", 587}, + {"Partition (a-%c): ", 588}, + {"This partition already exists.\n", 589}, + {"Warning: too many partitions (%d, maximum is %d).\n", 590}, {"\ \n\ -Syncing disks.\n", 587}, - {"SGI volhdr", 588}, - {"SGI trkrepl", 589}, - {"SGI secrepl", 590}, - {"SGI raw", 591}, - {"SGI bsd", 592}, - {"SGI sysv", 593}, - {"SGI volume", 594}, - {"SGI efs", 595}, - {"SGI lvol", 596}, - {"SGI rlvol", 597}, - {"SGI xfs", 598}, - {"SGI xfslog", 599}, - {"SGI xlv", 600}, - {"SGI xvm", 601}, - {"Linux swap", 602}, - {"Linux native", 603}, - {"Linux LVM", 604}, - {"Linux RAID", 605}, +Syncing disks.\n", 591}, + {"SGI volhdr", 592}, + {"SGI trkrepl", 593}, + {"SGI secrepl", 594}, + {"SGI raw", 595}, + {"SGI bsd", 596}, + {"SGI sysv", 597}, + {"SGI volume", 598}, + {"SGI efs", 599}, + {"SGI lvol", 600}, + {"SGI rlvol", 601}, + {"SGI xfs", 602}, + {"SGI xfslog", 603}, + {"SGI xlv", 604}, + {"SGI xvm", 605}, + {"Linux swap", 606}, + {"Linux native", 607}, + {"Linux LVM", 608}, + {"Linux RAID", 609}, {"\ According to MIPS Computer Systems, Inc the Label must not contain more than \ -512 bytes\n", 606}, - {"Detected sgi disklabel with wrong checksum.\n", 607}, +512 bytes\n", 610}, + {"Detected sgi disklabel with wrong checksum.\n", 611}, {"\ \n\ Disk %s (SGI disk label): %d heads, %d sectors\n\ @@ -772,140 +782,141 @@ Disk %s (SGI disk label): %d heads, %d sectors\n\ %d extra sects/cyl, interleave %d:1\n\ %s\n\ Units = %s of %d * 512 bytes\n\ -\n", 608}, +\n", 612}, {"\ \n\ Disk %s (SGI disk label): %d heads, %d sectors, %d cylinders\n\ Units = %s of %d * 512 bytes\n\ -\n", 609}, +\n", 613}, {"\ ----- partitions -----\n\ -Pt# %*s Info Start End Sectors Id System\n", 610}, +Pt# %*s Info Start End Sectors Id System\n", 614}, {"\ ----- Bootinfo -----\n\ Bootfile: %s\n\ ------ Directory Entries -----\n", 611}, - {"%2d: %-10s sector%5u size%8u\n", 612}, +----- Directory Entries -----\n", 615}, + {"%2d: %-10s sector%5u size%8u\n", 616}, {"\ \n\ Invalid Bootfile!\n\ \tThe bootfile must be an absolute non-zero pathname,\n\ -\te.g. \"/unix\" or \"/unix.save\".\n", 613}, +\te.g. \"/unix\" or \"/unix.save\".\n", 617}, {"\ \n\ -\tName of Bootfile too long: 16 bytes maximum.\n", 614}, +\tName of Bootfile too long: 16 bytes maximum.\n", 618}, {"\ \n\ -\tBootfile must have a fully qualified pathname.\n", 615}, +\tBootfile must have a fully qualified pathname.\n", 619}, {"\ \n\ \tBe aware, that the bootfile is not checked for existence.\n\ -\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n", 616}, +\tSGI's default is \"/unix\" and for backup \"/unix.save\".\n", 620}, {"\ \n\ -\tBootfile is changed to \"%s\".\n", 617}, - {"More than one entire disk entry present.\n", 618}, - {"No partitions defined\n", 619}, - {"IRIX likes when Partition 11 covers the entire disk.\n", 620}, +\tBootfile is changed to \"%s\".\n", 621}, + {"More than one entire disk entry present.\n", 622}, + {"No partitions defined\n", 623}, + {"IRIX likes when Partition 11 covers the entire disk.\n", 624}, {"\ The entire disk partition should start at block 0,\n\ -not at diskblock %d.\n", 621}, +not at diskblock %d.\n", 625}, {"\ The entire disk partition is only %d diskblock large,\n\ -but the disk is %d diskblocks long.\n", 622}, - {"One Partition (#11) should cover the entire disk.\n", 623}, - {"Partition %d does not start on cylinder boundary.\n", 624}, - {"Partition %d does not end on cylinder boundary.\n", 625}, - {"The Partition %d and %d overlap by %d sectors.\n", 626}, - {"Unused gap of %8d sectors - sectors %8d-%d\n", 627}, +but the disk is %d diskblocks long.\n", 626}, + {"One Partition (#11) should cover the entire disk.\n", 627}, + {"Partition %d does not start on cylinder boundary.\n", 628}, + {"Partition %d does not end on cylinder boundary.\n", 629}, + {"The Partition %d and %d overlap by %d sectors.\n", 630}, + {"Unused gap of %8d sectors - sectors %8d-%d\n", 631}, {"\ \n\ -The boot partition does not exist.\n", 628}, +The boot partition does not exist.\n", 632}, {"\ \n\ -The swap partition does not exist.\n", 629}, +The swap partition does not exist.\n", 633}, {"\ \n\ -The swap partition has no swap type.\n", 630}, - {"\tYou have chosen an unusual boot file name.\n", 631}, - {"Sorry You may change the Tag of non-empty partitions.\n", 632}, +The swap partition has no swap type.\n", 634}, + {"\tYou have chosen an unusual boot file name.\n", 635}, + {"Sorry You may change the Tag of non-empty partitions.\n", 636}, {"\ It is highly recommended that the partition at offset 0\n\ is of type \"SGI volhdr\", the IRIX system will rely on it to\n\ retrieve from its directory standalone tools like sash and fx.\n\ Only the \"SGI volume\" entire disk section may violate this.\n\ -Type YES if you are sure about tagging this partition differently.\n", 633}, - {"Do You know, You got a partition overlap on the disk?\n", 634}, - {"Attempting to generate entire disk entry automatically.\n", 635}, - {"The entire disk is already covered with partitions.\n", 636}, - {"You got a partition overlap on the disk. Fix it first!\n", 637}, +Type YES if you are sure about tagging this partition differently.\n", 637}, + {"YES\n", 638}, + {"Do You know, You got a partition overlap on the disk?\n", 639}, + {"Attempting to generate entire disk entry automatically.\n", 640}, + {"The entire disk is already covered with partitions.\n", 641}, + {"You got a partition overlap on the disk. Fix it first!\n", 642}, {"\ It is highly recommended that eleventh partition\n\ -covers the entire disk and is of type `SGI volume'\n", 638}, - {"You will get a partition overlap on the disk. Fix it first!\n", 639}, - {" Last %s", 640}, +covers the entire disk and is of type `SGI volume'\n", 643}, + {"You will get a partition overlap on the disk. Fix it first!\n", 644}, + {" Last %s", 645}, {"\ Building a new SGI disklabel. Changes will remain in memory only,\n\ until you decide to write them. After that, of course, the previous\n\ content will be unrecoverably lost.\n\ -\n", 641}, - {"Trying to keep parameters of partition %d.\n", 642}, - {"ID=%02x\tSTART=%d\tLENGTH=%d\n", 643}, - {"Empty", 644}, - {"SunOS root", 645}, - {"SunOS swap", 646}, - {"SunOS usr", 647}, - {"Whole disk", 648}, - {"SunOS stand", 649}, - {"SunOS var", 650}, - {"SunOS home", 651}, - {"Linux raid autodetect", 652}, +\n", 646}, + {"Trying to keep parameters of partition %d.\n", 647}, + {"ID=%02x\tSTART=%d\tLENGTH=%d\n", 648}, + {"Empty", 649}, + {"SunOS root", 650}, + {"SunOS swap", 651}, + {"SunOS usr", 652}, + {"Whole disk", 653}, + {"SunOS stand", 654}, + {"SunOS var", 655}, + {"SunOS home", 656}, + {"Linux raid autodetect", 657}, {"\ Detected sun disklabel with wrong checksum.\n\ Probably you'll have to set all the values,\n\ e.g. heads, sectors, cylinders and partitions\n\ -or force a fresh label (s command in main menu)\n", 653}, - {"Autoconfigure found a %s%s%s\n", 654}, +or force a fresh label (s command in main menu)\n", 658}, + {"Autoconfigure found a %s%s%s\n", 659}, {"\ Building a new sun disklabel. Changes will remain in memory only,\n\ until you decide to write them. After that, of course, the previous\n\ content won't be recoverable.\n\ -\n", 655}, +\n", 660}, {"\ Drive type\n\ ? auto configure\n\ - 0 custom (with hardware detected defaults)", 656}, - {"Select type (? for auto, 0 for custom): ", 657}, - {"Autoconfigure failed.\n", 658}, - {"Sectors/track", 659}, - {"Alternate cylinders", 660}, - {"Physical cylinders", 661}, - {"Rotation speed (rpm)", 662}, - {"Interleave factor", 663}, - {"Extra sectors per cylinder", 664}, - {"You may change all the disk params from the x menu", 665}, - {"3,5\" floppy", 666}, - {"Linux custom", 667}, - {"Partition %d doesn't end on cylinder boundary\n", 668}, - {"Partition %d overlaps with others in sectors %d-%d\n", 669}, - {"Unused gap - sectors 0-%d\n", 670}, - {"Unused gap - sectors %d-%d\n", 671}, + 0 custom (with hardware detected defaults)", 661}, + {"Select type (? for auto, 0 for custom): ", 662}, + {"Autoconfigure failed.\n", 663}, + {"Sectors/track", 664}, + {"Alternate cylinders", 665}, + {"Physical cylinders", 666}, + {"Rotation speed (rpm)", 667}, + {"Interleave factor", 668}, + {"Extra sectors per cylinder", 669}, + {"You may change all the disk params from the x menu", 670}, + {"3,5\" floppy", 671}, + {"Linux custom", 672}, + {"Partition %d doesn't end on cylinder boundary\n", 673}, + {"Partition %d overlaps with others in sectors %d-%d\n", 674}, + {"Unused gap - sectors 0-%d\n", 675}, + {"Unused gap - sectors %d-%d\n", 676}, {"\ Other partitions already cover the whole disk.\n\ -Delete some/shrink them before retry.\n", 672}, +Delete some/shrink them before retry.\n", 677}, {"\ You haven't covered the whole disk with the 3rd partition, but your value\n\ %d %s covers some other partition. Your entry has been changed\n\ -to %d %s\n", 673}, +to %d %s\n", 678}, {"\ If you want to maintain SunOS/Solaris compatibility, consider leaving this\n\ -partition as Whole disk (5), starting at 0, with %u sectors\n", 674}, +partition as Whole disk (5), starting at 0, with %u sectors\n", 679}, {"\ It is highly recommended that the partition at offset 0\n\ is UFS, EXT2FS filesystem or SunOS swap. Putting Linux swap\n\ there may destroy your partition table and bootblock.\n\ Type YES if you're very sure you would like that partition\n\ -tagged with 82 (Linux swap): ", 675}, +tagged with 82 (Linux swap): ", 680}, {"\ \n\ Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n\ @@ -913,455 +924,453 @@ Disk %s (Sun disk label): %d heads, %d sectors, %d rpm\n\ %d extra sects/cyl, interleave %d:1\n\ %s\n\ Units = %s of %d * 512 bytes\n\ -\n", 676}, +\n", 681}, {"\ \n\ Disk %s (Sun disk label): %d heads, %d sectors, %d cylinders\n\ Units = %s of %d * 512 bytes\n\ -\n", 677}, - {"%*s Flag Start End Blocks Id System\n", 678}, - {"Number of alternate cylinders", 679}, - {"Number of physical cylinders", 680}, - {"FAT12", 681}, - {"XENIX root", 682}, - {"XENIX usr", 683}, - {"FAT16 <32M", 684}, - {"Extended", 685}, - {"FAT16", 686}, - {"HPFS/NTFS", 687}, - {"AIX", 688}, - {"AIX bootable", 689}, - {"OS/2 Boot Manager", 690}, - {"Win95 FAT32", 691}, - {"Win95 FAT32 (LBA)", 692}, - {"Win95 FAT16 (LBA)", 693}, - {"Win95 Ext'd (LBA)", 694}, - {"OPUS", 695}, - {"Hidden FAT12", 696}, - {"Compaq diagnostics", 697}, - {"Hidden FAT16 <32M", 698}, - {"Hidden FAT16", 699}, - {"Hidden HPFS/NTFS", 700}, - {"AST SmartSleep", 701}, - {"Hidden Win95 FAT32", 702}, - {"Hidden Win95 FAT32 (LBA)", 703}, - {"Hidden Win95 FAT16 (LBA)", 704}, - {"NEC DOS", 705}, - {"Plan 9", 706}, - {"PartitionMagic recovery", 707}, - {"Venix 80286", 708}, - {"PPC PReP Boot", 709}, - {"SFS", 710}, - {"QNX4.x", 711}, - {"QNX4.x 2nd part", 712}, - {"QNX4.x 3rd part", 713}, - {"OnTrack DM", 714}, - {"OnTrack DM6 Aux1", 715}, - {"CP/M", 716}, - {"OnTrack DM6 Aux3", 717}, - {"OnTrackDM6", 718}, - {"EZ-Drive", 719}, - {"Golden Bow", 720}, - {"Priam Edisk", 721}, - {"SpeedStor", 722}, - {"GNU HURD or SysV", 723}, - {"Novell Netware 286", 724}, - {"Novell Netware 386", 725}, - {"DiskSecure Multi-Boot", 726}, - {"PC/IX", 727}, - {"Old Minix", 728}, - {"Minix / old Linux", 729}, - {"OS/2 hidden C: drive", 730}, - {"Linux extended", 731}, - {"NTFS volume set", 732}, - {"Amoeba", 733}, - {"Amoeba BBT", 734}, - {"BSD/OS", 735}, - {"IBM Thinkpad hibernation", 736}, - {"BSD/386", 737}, - {"OpenBSD", 738}, - {"NeXTSTEP", 739}, - {"BSDI fs", 740}, - {"BSDI swap", 741}, - {"Boot Wizard hidden", 742}, - {"DRDOS/sec (FAT-12)", 743}, - {"DRDOS/sec (FAT-16 < 32M)", 744}, - {"DRDOS/sec (FAT-16)", 745}, - {"Syrinx", 746}, - {"Non-FS data", 747}, - {"CP/M / CTOS / ...", 748}, - {"Dell Utility", 749}, - {"BootIt", 750}, - {"DOS access", 751}, - {"DOS R/O", 752}, - {"BeOS fs", 753}, - {"EFI GPT", 754}, - {"EFI (FAT-12/16/32)", 755}, - {"DOS secondary", 756}, - {"LANstep", 757}, - {"BBT", 758}, - {"seek error on %s - cannot seek to %lu\n", 759}, - {"seek error: wanted 0x%08x%08x, got 0x%08x%08x\n", 760}, - {"out of memory - giving up\n", 761}, - {"read error on %s - cannot read sector %lu\n", 762}, - {"ERROR: sector %lu does not have an msdos signature\n", 763}, - {"write error on %s - cannot write sector %lu\n", 764}, - {"cannot open partition sector save file (%s)\n", 765}, - {"write error on %s\n", 766}, - {"cannot stat partition restore file (%s)\n", 767}, - {"partition restore file has wrong size - not restoring\n", 768}, - {"out of memory?\n", 769}, - {"cannot open partition restore file (%s)\n", 770}, - {"error reading %s\n", 771}, - {"cannot open device %s for writing\n", 772}, - {"error writing sector %lu on %s\n", 773}, - {"Disk %s: cannot get size\n", 774}, - {"Disk %s: cannot get geometry\n", 775}, +\n", 682}, + {"%*s Flag Start End Blocks Id System\n", 683}, + {"Number of alternate cylinders", 684}, + {"Number of physical cylinders", 685}, + {"FAT12", 686}, + {"XENIX root", 687}, + {"XENIX usr", 688}, + {"FAT16 <32M", 689}, + {"Extended", 690}, + {"FAT16", 691}, + {"HPFS/NTFS", 692}, + {"AIX", 693}, + {"AIX bootable", 694}, + {"OS/2 Boot Manager", 695}, + {"Win95 FAT32", 696}, + {"Win95 FAT32 (LBA)", 697}, + {"Win95 FAT16 (LBA)", 698}, + {"Win95 Ext'd (LBA)", 699}, + {"OPUS", 700}, + {"Hidden FAT12", 701}, + {"Compaq diagnostics", 702}, + {"Hidden FAT16 <32M", 703}, + {"Hidden FAT16", 704}, + {"Hidden HPFS/NTFS", 705}, + {"AST SmartSleep", 706}, + {"Hidden Win95 FAT32", 707}, + {"Hidden Win95 FAT32 (LBA)", 708}, + {"Hidden Win95 FAT16 (LBA)", 709}, + {"NEC DOS", 710}, + {"Plan 9", 711}, + {"PartitionMagic recovery", 712}, + {"Venix 80286", 713}, + {"PPC PReP Boot", 714}, + {"SFS", 715}, + {"QNX4.x", 716}, + {"QNX4.x 2nd part", 717}, + {"QNX4.x 3rd part", 718}, + {"OnTrack DM", 719}, + {"OnTrack DM6 Aux1", 720}, + {"CP/M", 721}, + {"OnTrack DM6 Aux3", 722}, + {"OnTrackDM6", 723}, + {"EZ-Drive", 724}, + {"Golden Bow", 725}, + {"Priam Edisk", 726}, + {"SpeedStor", 727}, + {"GNU HURD or SysV", 728}, + {"Novell Netware 286", 729}, + {"Novell Netware 386", 730}, + {"DiskSecure Multi-Boot", 731}, + {"PC/IX", 732}, + {"Old Minix", 733}, + {"Minix / old Linux", 734}, + {"OS/2 hidden C: drive", 735}, + {"Linux extended", 736}, + {"NTFS volume set", 737}, + {"Amoeba", 738}, + {"Amoeba BBT", 739}, + {"BSD/OS", 740}, + {"IBM Thinkpad hibernation", 741}, + {"FreeBSD", 742}, + {"OpenBSD", 743}, + {"NeXTSTEP", 744}, + {"NetBSD", 745}, + {"BSDI fs", 746}, + {"BSDI swap", 747}, + {"Boot Wizard hidden", 748}, + {"DRDOS/sec (FAT-12)", 749}, + {"DRDOS/sec (FAT-16 < 32M)", 750}, + {"DRDOS/sec (FAT-16)", 751}, + {"Syrinx", 752}, + {"Non-FS data", 753}, + {"CP/M / CTOS / ...", 754}, + {"Dell Utility", 755}, + {"BootIt", 756}, + {"DOS access", 757}, + {"DOS R/O", 758}, + {"BeOS fs", 759}, + {"EFI GPT", 760}, + {"EFI (FAT-12/16/32)", 761}, + {"Linux/PA-RISC boot", 762}, + {"DOS secondary", 763}, + {"LANstep", 764}, + {"BBT", 765}, + {"seek error on %s - cannot seek to %lu\n", 766}, + {"seek error: wanted 0x%08x%08x, got 0x%08x%08x\n", 767}, + {"out of memory - giving up\n", 768}, + {"read error on %s - cannot read sector %lu\n", 769}, + {"ERROR: sector %lu does not have an msdos signature\n", 770}, + {"write error on %s - cannot write sector %lu\n", 771}, + {"cannot open partition sector save file (%s)\n", 772}, + {"write error on %s\n", 773}, + {"cannot stat partition restore file (%s)\n", 774}, + {"partition restore file has wrong size - not restoring\n", 775}, + {"out of memory?\n", 776}, + {"cannot open partition restore file (%s)\n", 777}, + {"error reading %s\n", 778}, + {"cannot open device %s for writing\n", 779}, + {"error writing sector %lu on %s\n", 780}, + {"Disk %s: cannot get size\n", 781}, + {"Disk %s: cannot get geometry\n", 782}, {"\ Warning: start=%lu - this looks like a partition rather than\n\ the entire disk. Using fdisk on it is probably meaningless.\n\ -[Use the --force option if you really want this]\n", 776}, - {"Warning: HDIO_GETGEO says that there are %lu heads\n", 777}, - {"Warning: HDIO_GETGEO says that there are %lu sectors\n", 778}, - {"Warning: BLKGETSIZE/HDIO_GETGEO says that there are %lu cylinders\n", 779}, +[Use the --force option if you really want this]\n", 783}, + {"Warning: HDIO_GETGEO says that there are %lu heads\n", 784}, + {"Warning: HDIO_GETGEO says that there are %lu sectors\n", 785}, + {"Warning: BLKGETSIZE/HDIO_GETGEO says that there are %lu cylinders\n", 786}, {"\ Warning: unlikely number of sectors (%lu) - usually at most 63\n\ -This will give problems with all software that uses C/H/S addressing.\n", 780}, +This will give problems with all software that uses C/H/S addressing.\n", 787}, {"\ \n\ -Disk %s: %lu cylinders, %lu heads, %lu sectors/track\n", 781}, +Disk %s: %lu cylinders, %lu heads, %lu sectors/track\n", 788}, {"\ -%s of partition %s has impossible value for head: %lu (should be in 0-%lu)\n", 782}, +%s of partition %s has impossible value for head: %lu (should be in 0-%lu)\n", 789}, {"\ -%s of partition %s has impossible value for sector: %lu (should be in \ -1-%lu)\n", 783}, +%s of partition %s has impossible value for sector: %lu (should be in 1-%\ +lu)\n", 790}, {"\ -%s of partition %s has impossible value for cylinders: %lu (should be in \ -0-%lu)\n", 784}, +%s of partition %s has impossible value for cylinders: %lu (should be in 0-%\ +lu)\n", 791}, {"\ Id Name\n\ -\n", 785}, - {"Re-reading the partition table ...\n", 786}, +\n", 792}, + {"Re-reading the partition table ...\n", 793}, {"\ The command to re-read the partition table failed\n\ -Reboot your system now, before using mkfs\n", 787}, - {"Error closing %s\n", 788}, - {"%s: no such partition\n", 789}, - {"unrecognized format - using sectors\n", 790}, - {"# partition table of %s\n", 791}, - {"unimplemented format - using %s\n", 792}, +Reboot your system now, before using mkfs\n", 794}, + {"Error closing %s\n", 795}, + {"%s: no such partition\n", 796}, + {"unrecognized format - using sectors\n", 797}, + {"# partition table of %s\n", 798}, + {"unimplemented format - using %s\n", 799}, {"\ Units = cylinders of %lu bytes, blocks of 1024 bytes, counting from %d\n\ -\n", 793}, - {" Device Boot Start End #cyls #blocks Id System\n", 794}, +\n", 800}, + {" Device Boot Start End #cyls #blocks Id System\n", 801}, {"\ Units = sectors of 512 bytes, counting from %d\n\ -\n", 795}, - {" Device Boot Start End #sectors Id System\n", 796}, +\n", 802}, + {" Device Boot Start End #sectors Id System\n", 803}, {"\ Units = blocks of 1024 bytes, counting from %d\n\ -\n", 797}, - {" Device Boot Start End #blocks Id System\n", 798}, +\n", 804}, + {" Device Boot Start End #blocks Id System\n", 805}, {"\ Units = megabytes of 1048576 bytes, blocks of 1024 bytes, counting from %d\n\ -\n", 799}, - {" Device Boot Start End MB #blocks Id System\n", 800}, - {"\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 801}, - {"\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 802}, - {"partition ends on cylinder %ld, beyond the end of the disk\n", 803}, - {"No partitions found\n", 804}, +\n", 806}, + {" Device Boot Start End MB #blocks Id System\n", 807}, + {"\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 808}, + {"\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 809}, + {"partition ends on cylinder %ld, beyond the end of the disk\n", 810}, + {"No partitions found\n", 811}, {"\ Warning: The first partition looks like it was made\n\ for C/H/S=*/%ld/%ld (instead of %ld/%ld/%ld).\n\ -For this listing I'll assume that geometry.\n", 805}, - {"no partition table present.\n", 806}, - {"strange, only %d partitions defined.\n", 807}, - {"Warning: partition %s has size 0 but is not marked Empty\n", 808}, - {"Warning: partition %s has size 0 and is bootable\n", 809}, - {"Warning: partition %s has size 0 and nonzero start\n", 810}, - {"Warning: partition %s ", 811}, - {"is not contained in partition %s\n", 812}, - {"Warning: partitions %s ", 813}, - {"and %s overlap\n", 814}, +For this listing I'll assume that geometry.\n", 812}, + {"no partition table present.\n", 813}, + {"strange, only %d partitions defined.\n", 814}, + {"Warning: partition %s has size 0 but is not marked Empty\n", 815}, + {"Warning: partition %s has size 0 and is bootable\n", 816}, + {"Warning: partition %s has size 0 and nonzero start\n", 817}, + {"Warning: partition %s ", 818}, + {"is not contained in partition %s\n", 819}, + {"Warning: partitions %s ", 820}, + {"and %s overlap\n", 821}, {"\ Warning: partition %s contains part of the partition table (sector %lu),\n\ -and will destroy it when filled\n", 815}, - {"Warning: partition %s starts at sector 0\n", 816}, - {"Warning: partition %s extends past end of disk\n", 817}, +and will destroy it when filled\n", 822}, + {"Warning: partition %s starts at sector 0\n", 823}, + {"Warning: partition %s extends past end of disk\n", 824}, {"\ Among the primary partitions, at most one can be extended\n\ - (although this is not a problem under Linux)\n", 818}, - {"Warning: partition %s does not start at a cylinder boundary\n", 819}, - {"Warning: partition %s does not end at a cylinder boundary\n", 820}, + (although this is not a problem under Linux)\n", 825}, + {"Warning: partition %s does not start at a cylinder boundary\n", 826}, + {"Warning: partition %s does not end at a cylinder boundary\n", 827}, {"\ Warning: more than one primary partition is marked bootable (active)\n\ -This does not matter for LILO, but the DOS MBR will not boot this disk.\n", 821}, +This does not matter for LILO, but the DOS MBR will not boot this disk.\n", 828}, {"\ Warning: usually one can boot from primary partitions only\n\ -LILO disregards the `bootable' flag.\n", 822}, +LILO disregards the `bootable' flag.\n", 829}, {"\ Warning: no primary partition is marked bootable (active)\n\ -This does not matter for LILO, but the DOS MBR will not boot this disk.\n", 823}, +This does not matter for LILO, but the DOS MBR will not boot this disk.\n", 830}, {"\ -partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 824}, - {"partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 825}, - {"partition %s ends on cylinder %ld, beyond the end of the disk\n", 826}, +partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 831}, + {"partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n", 832}, + {"partition %s ends on cylinder %ld, beyond the end of the disk\n", 833}, {"\ Warning: shifted start of the extd partition from %ld to %ld\n\ -(For listing purposes only. Do not change its contents.)\n", 827}, +(For listing purposes only. Do not change its contents.)\n", 834}, {"\ Warning: extended partition does not start at a cylinder boundary.\n\ -DOS and Linux will interpret the contents differently.\n", 828}, - {"too many partitions - ignoring those past nr (%d)\n", 829}, - {"tree of partitions?\n", 830}, - {"detected Disk Manager - unable to handle that\n", 831}, - {"DM6 signature found - giving up\n", 832}, - {"strange..., an extended partition of size 0?\n", 833}, - {"strange..., a BSD partition of size 0?\n", 834}, - {" %s: unrecognized partition\n", 835}, - {"-n flag was given: Nothing changed\n", 836}, - {"Failed saving the old sectors - aborting\n", 837}, - {"Failed writing the partition on %s\n", 838}, - {"long or incomplete input line - quitting\n", 839}, - {"input error: `=' expected after %s field\n", 840}, - {"input error: unexpected character %c after %s field\n", 841}, - {"unrecognized input: %s\n", 842}, - {"number too big\n", 843}, - {"trailing junk after number\n", 844}, - {"no room for partition descriptor\n", 845}, - {"cannot build surrounding extended partition\n", 846}, - {"too many input fields\n", 847}, - {"No room for more\n", 848}, - {"Illegal type\n", 849}, - {"Warning: given size (%lu) exceeds max allowable size (%lu)\n", 850}, - {"Warning: empty partition\n", 851}, - {"Warning: bad partition start (earliest %lu)\n", 852}, - {"unrecognized bootable flag - choose - or *\n", 853}, - {"partial c,h,s specification?\n", 854}, - {"Extended partition not where expected\n", 855}, - {"bad input\n", 856}, - {"too many partitions\n", 857}, +DOS and Linux will interpret the contents differently.\n", 835}, + {"too many partitions - ignoring those past nr (%d)\n", 836}, + {"tree of partitions?\n", 837}, + {"detected Disk Manager - unable to handle that\n", 838}, + {"DM6 signature found - giving up\n", 839}, + {"strange..., an extended partition of size 0?\n", 840}, + {"strange..., a BSD partition of size 0?\n", 841}, + {" %s: unrecognized partition\n", 842}, + {"-n flag was given: Nothing changed\n", 843}, + {"Failed saving the old sectors - aborting\n", 844}, + {"Failed writing the partition on %s\n", 845}, + {"long or incomplete input line - quitting\n", 846}, + {"input error: `=' expected after %s field\n", 847}, + {"input error: unexpected character %c after %s field\n", 848}, + {"unrecognized input: %s\n", 849}, + {"number too big\n", 850}, + {"trailing junk after number\n", 851}, + {"no room for partition descriptor\n", 852}, + {"cannot build surrounding extended partition\n", 853}, + {"too many input fields\n", 854}, + {"No room for more\n", 855}, + {"Illegal type\n", 856}, + {"Warning: given size (%lu) exceeds max allowable size (%lu)\n", 857}, + {"Warning: empty partition\n", 858}, + {"Warning: bad partition start (earliest %lu)\n", 859}, + {"unrecognized bootable flag - choose - or *\n", 860}, + {"partial c,h,s specification?\n", 861}, + {"Extended partition not where expected\n", 862}, + {"bad input\n", 863}, + {"too many partitions\n", 864}, {"\ Input in the following format; absent fields get a default value.\n\ \n\ -Usually you only need to specify and (and perhaps ).\n", 858}, - {"version", 859}, - {"Usage: %s [options] device ...\n", 860}, - {"device: something like /dev/hda or /dev/sda", 861}, - {"useful options:", 862}, - {" -s [or --show-size]: list size of a partition", 863}, - {" -c [or --id]: print or change partition Id", 864}, - {" -l [or --list]: list partitions of each device", 865}, - {" -d [or --dump]: idem, but in a format suitable for later input", 866}, - {" -i [or --increment]: number cylinders etc. from 1 instead of from 0", 867}, - {"\ - -uS, -uB, -uC, -uM: accept/report in units of \ -sectors/blocks/cylinders/MB", 868}, - {" -T [or --list-types]:list the known partition types", 869}, - {" -D [or --DOS]: for DOS-compatibility: waste a little space", 870}, - {" -R [or --re-read]: make kernel reread partition table", 871}, - {" -N# : change only the partition with number #", 872}, - {" -n : do not actually write to disk", 873}, - {"\ - -O file : save the sectors that will be overwritten to file", 874}, - {" -I file : restore these sectors again", 875}, - {" -v [or --version]: print version", 876}, - {" -? [or --help]: print this message", 877}, - {"dangerous options:", 878}, - {" -g [or --show-geometry]: print the kernel's idea of the geometry", 879}, +Usually you only need to specify and (and perhaps ).\n", 865}, + {"version", 866}, + {"Usage: %s [options] device ...\n", 867}, + {"device: something like /dev/hda or /dev/sda", 868}, + {"useful options:", 869}, + {" -s [or --show-size]: list size of a partition", 870}, + {" -c [or --id]: print or change partition Id", 871}, + {" -l [or --list]: list partitions of each device", 872}, + {" -d [or --dump]: idem, but in a format suitable for later input", 873}, + {" -i [or --increment]: number cylinders etc. from 1 instead of from 0", 874}, + {"\ + -uS, -uB, -uC, -uM: accept/report in units of sectors/blocks/cylinders/\ +MB", 875}, + {" -T [or --list-types]:list the known partition types", 876}, + {" -D [or --DOS]: for DOS-compatibility: waste a little space", 877}, + {" -R [or --re-read]: make kernel reread partition table", 878}, + {" -N# : change only the partition with number #", 879}, + {" -n : do not actually write to disk", 880}, + {"\ + -O file : save the sectors that will be overwritten to file", 881}, + {" -I file : restore these sectors again", 882}, + {" -v [or --version]: print version", 883}, + {" -? [or --help]: print this message", 884}, + {"dangerous options:", 885}, + {" -g [or --show-geometry]: print the kernel's idea of the geometry", 886}, {"\ -x [or --show-extended]: also list extended partitions on output\n\ - or expect descriptors for them on input", 880}, - {"\ - -L [or --Linux]: do not complain about things irrelevant for Linux", 881}, - {" -q [or --quiet]: suppress warning messages", 882}, - {" You can override the detected geometry using:", 883}, - {" -C# [or --cylinders #]:set the number of cylinders to use", 884}, - {" -H# [or --heads #]: set the number of heads to use", 885}, - {" -S# [or --sectors #]: set the number of sectors to use", 886}, - {"You can disable all consistency checking with:", 887}, - {" -f [or --force]: do what I say, even if it is stupid", 888}, - {"Usage:", 889}, - {"%s device\t\t list active partitions on device\n", 890}, - {"%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n", 891}, - {"%s -An device\t activate partition n, inactivate the other ones\n", 892}, - {"no command?\n", 893}, - {"total: %d blocks\n", 894}, - {"usage: sfdisk --print-id device partition-number\n", 895}, - {"usage: sfdisk --change-id device partition-number Id\n", 896}, - {"usage: sfdisk --id device partition-number [Id]\n", 897}, - {"can specify only one device (except with -l or -s)\n", 898}, - {"cannot open %s %s\n", 899}, - {"read-write", 900}, - {"for reading", 901}, - {"%s: OK\n", 902}, - {"%s: %ld cylinders, %ld heads, %ld sectors/track\n", 903}, - {"BLKGETSIZE ioctl failed for %s\n", 904}, - {"bad active byte: 0x%x instead of 0x80\n", 905}, + or expect descriptors for them on input", 887}, + {"\ + -L [or --Linux]: do not complain about things irrelevant for Linux", 888}, + {" -q [or --quiet]: suppress warning messages", 889}, + {" You can override the detected geometry using:", 890}, + {" -C# [or --cylinders #]:set the number of cylinders to use", 891}, + {" -H# [or --heads #]: set the number of heads to use", 892}, + {" -S# [or --sectors #]: set the number of sectors to use", 893}, + {"You can disable all consistency checking with:", 894}, + {" -f [or --force]: do what I say, even if it is stupid", 895}, + {"Usage:", 896}, + {"%s device\t\t list active partitions on device\n", 897}, + {"%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n", 898}, + {"%s -An device\t activate partition n, inactivate the other ones\n", 899}, + {"no command?\n", 900}, + {"total: %d blocks\n", 901}, + {"usage: sfdisk --print-id device partition-number\n", 902}, + {"usage: sfdisk --change-id device partition-number Id\n", 903}, + {"usage: sfdisk --id device partition-number [Id]\n", 904}, + {"can specify only one device (except with -l or -s)\n", 905}, + {"cannot open %s read-write\n", 906}, + {"cannot open %s for reading\n", 907}, + {"%s: OK\n", 908}, + {"%s: %ld cylinders, %ld heads, %ld sectors/track\n", 909}, + {"BLKGETSIZE ioctl failed for %s\n", 910}, + {"bad active byte: 0x%x instead of 0x80\n", 911}, {"\ Done\n\ -\n", 906}, +\n", 912}, {"\ You have %d active primary partitions. This does not matter for LILO,\n\ -but the DOS MBR will only boot a disk with 1 active partition.\n", 907}, - {"partition %s has id %x and is not hidden\n", 908}, - {"Bad Id %lx\n", 909}, - {"This disk is currently in use.\n", 910}, - {"Fatal error: cannot find %s\n", 911}, - {"Warning: %s is not a block device\n", 912}, - {"Checking that no-one is using this disk right now ...\n", 913}, +but the DOS MBR will only boot a disk with 1 active partition.\n", 913}, + {"partition %s has id %x and is not hidden\n", 914}, + {"Bad Id %lx\n", 915}, + {"This disk is currently in use.\n", 916}, + {"Fatal error: cannot find %s\n", 917}, + {"Warning: %s is not a block device\n", 918}, + {"Checking that no-one is using this disk right now ...\n", 919}, {"\ \n\ This disk is currently in use - repartitioning is probably a bad idea.\n\ Umount all file systems, and swapoff all swap partitions on this disk.\n\ -Use the --no-reread flag to suppress this check.\n", 914}, - {"Use the --force flag to overrule all checks.\n", 915}, - {"OK\n", 916}, - {"Old situation:\n", 917}, - {"Partition %d does not exist, cannot change it\n", 918}, - {"New situation:\n", 919}, +Use the --no-reread flag to suppress this check.\n", 920}, + {"Use the --force flag to overrule all checks.\n", 921}, + {"OK\n", 922}, + {"Old situation:\n", 923}, + {"Partition %d does not exist, cannot change it\n", 924}, + {"New situation:\n", 925}, {"\ I don't like these partitions - nothing changed.\n\ -(If you really want this, use the --force option.)\n", 920}, - {"I don't like this - probably you should answer No\n", 921}, - {"Are you satisfied with this? [ynq] ", 922}, - {"Do you want to write this to disk? [ynq] ", 923}, +(If you really want this, use the --force option.)\n", 926}, + {"I don't like this - probably you should answer No\n", 927}, + {"Are you satisfied with this? [ynq] ", 928}, + {"Do you want to write this to disk? [ynq] ", 929}, {"\ \n\ -sfdisk: premature end of input\n", 924}, - {"Quitting - nothing changed\n", 925}, - {"Please answer one of y,n,q\n", 926}, +sfdisk: premature end of input\n", 930}, + {"Quitting - nothing changed\n", 931}, + {"Please answer one of y,n,q\n", 932}, {"\ Successfully wrote the new partition table\n\ -\n", 927}, +\n", 933}, {"\ If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n\ to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n\ -(See fdisk(8).)\n", 928}, - {"usage: banner [-w width]\n", 929}, - {"Message: ", 930}, - {"The character '%c' is not in my character set", 931}, - {"Message '%s' is OK\n", 932}, - {"Try `getopt --help' for more information.\n", 933}, - {"empty long option after -l or --long argument", 934}, - {"unknown shell after -s or --shell argument", 935}, - {"Usage: getopt optstring parameters\n", 936}, - {" getopt [options] [--] optstring parameters\n", 937}, - {" getopt [options] -o|--options optstring [options] [--]\n", 938}, - {" parameters\n", 939}, - {"\ - -a, --alternative Allow long options starting with single -\n", 940}, - {" -h, --help This small usage guide\n", 941}, - {" -l, --longoptions=longopts Long options to be recognized\n", 942}, - {"\ - -n, --name=progname The name under which errors are reported\n", 943}, - {" -o, --options=optstring Short options to be recognized\n", 944}, - {" -q, --quiet Disable error reporting by getopt(3)\n", 945}, - {" -Q, --quiet-output No normal output\n", 946}, - {" -s, --shell=shell Set shell quoting conventions\n", 947}, - {" -T, --test Test for getopt(1) version\n", 948}, - {" -u, --unqote Do not quote the output\n", 949}, - {" -V, --version Output version information\n", 950}, - {"missing optstring argument", 951}, - {"getopt (enhanced) 1.1.2\n", 952}, - {"internal error, contact the author.", 953}, - {"booted from MILO\n", 954}, - {"Ruffian BCD clock\n", 955}, - {"clockport adjusted to 0x%x\n", 956}, - {"funky TOY!\n", 957}, - {"%s: atomic %s failed for 1000 iterations!", 958}, - {"Cannot open /dev/port: %s", 959}, - {"I failed to get permission because I didn't try.\n", 960}, - {"%s is unable to get I/O port access: the iopl(3) call failed.\n", 961}, - {"Probably you need root privileges.\n", 962}, - {"Assuming hardware clock is kept in %s time.\n", 963}, - {"UTC", 964}, - {"local", 965}, - {"%s: Warning: unrecognized third line in adjtime file\n", 966}, - {"(Expected: `UTC' or `LOCAL' or nothing.)\n", 967}, - {"Last drift adjustment done at %ld seconds after 1969\n", 968}, - {"Last calibration done at %ld seconds after 1969\n", 969}, - {"Hardware clock is on %s time\n", 970}, - {"unknown", 971}, - {"Waiting for clock tick...\n", 972}, - {"...got clock tick\n", 973}, - {"Invalid values in hardware clock: %4d/%.2d/%.2d %.2d:%.2d:%.2d\n", 974}, - {"Hw clock time : %4d/%.2d/%.2d %.2d:%.2d:%.2d = %ld seconds since 1969\n", 975}, - {"Time read from Hardware Clock: %4d/%.2d/%.2d %02d:%02d:%02d\n", 976}, - {"Setting Hardware Clock to %.2d:%.2d:%.2d = %ld seconds since 1969\n", 977}, - {"Clock not changed - testing only.\n", 978}, +(See fdisk(8).)\n", 934}, + {"Try `getopt --help' for more information.\n", 935}, + {"empty long option after -l or --long argument", 936}, + {"unknown shell after -s or --shell argument", 937}, + {"Usage: getopt optstring parameters\n", 938}, + {" getopt [options] [--] optstring parameters\n", 939}, + {" getopt [options] -o|--options optstring [options] [--]\n", 940}, + {" parameters\n", 941}, + {"\ + -a, --alternative Allow long options starting with single -\n", 942}, + {" -h, --help This small usage guide\n", 943}, + {" -l, --longoptions=longopts Long options to be recognized\n", 944}, + {"\ + -n, --name=progname The name under which errors are reported\n", 945}, + {" -o, --options=optstring Short options to be recognized\n", 946}, + {" -q, --quiet Disable error reporting by getopt(3)\n", 947}, + {" -Q, --quiet-output No normal output\n", 948}, + {" -s, --shell=shell Set shell quoting conventions\n", 949}, + {" -T, --test Test for getopt(1) version\n", 950}, + {" -u, --unqote Do not quote the output\n", 951}, + {" -V, --version Output version information\n", 952}, + {"missing optstring argument", 953}, + {"getopt (enhanced) 1.1.2\n", 954}, + {"internal error, contact the author.", 955}, + {"booted from MILO\n", 956}, + {"Ruffian BCD clock\n", 957}, + {"clockport adjusted to 0x%x\n", 958}, + {"funky TOY!\n", 959}, + {"%s: atomic %s failed for 1000 iterations!", 960}, + {"Cannot open /dev/port: %s", 961}, + {"I failed to get permission because I didn't try.\n", 962}, + {"%s is unable to get I/O port access: the iopl(3) call failed.\n", 963}, + {"Probably you need root privileges.\n", 964}, + {"Assuming hardware clock is kept in %s time.\n", 965}, + {"UTC", 966}, + {"local", 967}, + {"%s: Warning: unrecognized third line in adjtime file\n", 968}, + {"(Expected: `UTC' or `LOCAL' or nothing.)\n", 969}, + {"Last drift adjustment done at %ld seconds after 1969\n", 970}, + {"Last calibration done at %ld seconds after 1969\n", 971}, + {"Hardware clock is on %s time\n", 972}, + {"unknown", 973}, + {"Waiting for clock tick...\n", 974}, + {"...got clock tick\n", 975}, + {"Invalid values in hardware clock: %4d/%.2d/%.2d %.2d:%.2d:%.2d\n", 976}, + {"Hw clock time : %4d/%.2d/%.2d %.2d:%.2d:%.2d = %ld seconds since 1969\n", 977}, + {"Time read from Hardware Clock: %4d/%.2d/%.2d %02d:%02d:%02d\n", 978}, + {"Setting Hardware Clock to %.2d:%.2d:%.2d = %ld seconds since 1969\n", 979}, + {"Clock not changed - testing only.\n", 980}, {"\ Time elapsed since reference time has been %.6f seconds.\n\ -Delaying further to reach the next full second.\n", 979}, +Delaying further to reach the next full second.\n", 981}, {"\ The Hardware Clock registers contain values that are either invalid (e.g. \ -50th day of month) or beyond the range we can handle (e.g. Year 2095).\n", 980}, - {"%s %.6f seconds\n", 981}, - {"No --date option specified.\n", 982}, +50th day of month) or beyond the range we can handle (e.g. Year 2095).\n", 982}, + {"%s %.6f seconds\n", 983}, + {"No --date option specified.\n", 984}, + {"--date argument too long\n", 985}, {"\ The value of the --date option is not a valid date.\n\ -In particular, it contains quotation marks.\n", 983}, - {"Issuing date command: %s\n", 984}, - {"Unable to run 'date' program in /bin/sh shell. popen() failed", 985}, - {"response from date command = %s\n", 986}, +In particular, it contains quotation marks.\n", 986}, + {"Issuing date command: %s\n", 987}, + {"Unable to run 'date' program in /bin/sh shell. popen() failed", 988}, + {"response from date command = %s\n", 989}, {"\ The date command issued by %s returned unexpected results.\n\ The command was:\n\ %s\n\ The response was:\n\ - %s\n", 987}, + %s\n", 990}, {"\ The date command issued by %s returned something other than an integer where \ the converted time value was expected.\n\ The command was:\n\ %s\n\ The response was:\n\ - %s\n", 988}, - {"date string %s equates to %ld seconds since 1969.\n", 989}, + %s\n", 991}, + {"date string %s equates to %ld seconds since 1969.\n", 992}, {"\ The Hardware Clock does not contain a valid time, so we cannot set the \ -System Time from it.\n", 990}, - {"Calling settimeofday:\n", 991}, - {"\ttv.tv_sec = %ld, tv.tv_usec = %ld\n", 992}, - {"\ttz.tz_minuteswest = %d\n", 993}, - {"Not setting system clock because running in test mode.\n", 994}, - {"Must be superuser to set system clock.\n", 995}, - {"settimeofday() failed", 996}, +System Time from it.\n", 993}, + {"Calling settimeofday:\n", 994}, + {"\ttv.tv_sec = %ld, tv.tv_usec = %ld\n", 995}, + {"\ttz.tz_minuteswest = %d\n", 996}, + {"Not setting system clock because running in test mode.\n", 997}, + {"Must be superuser to set system clock.\n", 998}, + {"settimeofday() failed", 999}, {"\ Not adjusting drift factor because the Hardware Clock previously contained \ -garbage.\n", 997}, +garbage.\n", 1000}, {"\ Not adjusting drift factor because it has been less than a day since the \ -last calibration.\n", 998}, +last calibration.\n", 1001}, {"\ Clock drifted %d seconds in the past %d seconds in spite of a drift factor \ of %f seconds/day.\n\ -Adjusting drift factor by %f seconds/day\n", 999}, - {"Time since last adjustment is %d seconds\n", 1000}, - {"Need to insert %d seconds and refer time back %.6f seconds ago\n", 1001}, - {"Not updating adjtime file because of testing mode.\n", 1002}, +Adjusting drift factor by %f seconds/day\n", 1002}, + {"Time since last adjustment is %d seconds\n", 1003}, + {"Need to insert %d seconds and refer time back %.6f seconds ago\n", 1004}, + {"Not updating adjtime file because of testing mode.\n", 1005}, {"\ Would have written the following to %s:\n\ -%s", 1003}, - {"Drift adjustment parameters not updated.\n", 1004}, +%s", 1006}, + {"Drift adjustment parameters not updated.\n", 1007}, {"\ -The Hardware Clock does not contain a valid time, so we cannot adjust it.\n", 1005}, - {"Needed adjustment is less than one second, so not setting clock.\n", 1006}, - {"Using %s.\n", 1007}, - {"No usable clock interface found.\n", 1008}, - {"Unable to set system clock.\n", 1009}, +The Hardware Clock does not contain a valid time, so we cannot adjust it.\n", 1008}, + {"Needed adjustment is less than one second, so not setting clock.\n", 1009}, + {"Using %s.\n", 1010}, + {"No usable clock interface found.\n", 1011}, + {"Unable to set system clock.\n", 1012}, {"\ The kernel keeps an epoch value for the Hardware Clock only on an Alpha \ machine.\n\ This copy of hwclock was built for a machine other than Alpha\n\ -(and thus is presumably not running on an Alpha now). No action taken.\n", 1010}, - {"Unable to get the epoch value from the kernel.\n", 1011}, - {"Kernel is assuming an epoch value of %lu\n", 1012}, +(and thus is presumably not running on an Alpha now). No action taken.\n", 1013}, + {"Unable to get the epoch value from the kernel.\n", 1014}, + {"Kernel is assuming an epoch value of %lu\n", 1015}, {"\ To set the epoch value, you must use the 'epoch' option to tell to what \ -value to set it.\n", 1013}, - {"Not setting the epoch to %d - testing only.\n", 1014}, - {"Unable to set the epoch value in the kernel.\n", 1015}, +value to set it.\n", 1016}, + {"Not setting the epoch to %d - testing only.\n", 1017}, + {"Unable to set the epoch value in the kernel.\n", 1018}, {"\ hwclock - query and set the hardware clock (RTC)\n\ \n\ @@ -1389,548 +1398,557 @@ Options: \n\ --epoch=year specifies the year which is the beginning of the \n\ hardware clock's epoch value\n\ --noadjfile do not access /etc/adjtime. Requires the use of\n\ - either --utc or --localtime\n", 1016}, + either --utc or --localtime\n", 1019}, {"\ --jensen, --arc, --srm, --funky-toy\n\ - tell hwclock the type of alpha you have (see hwclock(8))\n", 1017}, - {"%s takes no non-option arguments. You supplied %d.\n", 1018}, + tell hwclock the type of alpha you have (see hwclock(8))\n", 1020}, + {"%s takes no non-option arguments. You supplied %d.\n", 1021}, {"\ You have specified multiple function options.\n\ -You can only perform one function at a time.\n", 1019}, +You can only perform one function at a time.\n", 1022}, {"\ %s: The --utc and --localtime options are mutually exclusive. You specified \ -both.\n", 1020}, +both.\n", 1023}, {"\ %s: The --adjust and --noadjfile options are mutually exclusive. You \ -specified both.\n", 1021}, - {"%s: With --noadjfile, you must specify either --utc or --localtime\n", 1022}, - {"No usable set-to time. Cannot set clock.\n", 1023}, - {"Sorry, only the superuser can change the Hardware Clock.\n", 1024}, - {"Sorry, only the superuser can change the System Clock.\n", 1025}, +specified both.\n", 1024}, + {"%s: With --noadjfile, you must specify either --utc or --localtime\n", 1025}, + {"No usable set-to time. Cannot set clock.\n", 1026}, + {"Sorry, only the superuser can change the Hardware Clock.\n", 1027}, + {"Sorry, only the superuser can change the System Clock.\n", 1028}, {"\ Sorry, only the superuser can change the Hardware Clock epoch in the \ -kernel.\n", 1026}, - {"Cannot access the Hardware Clock via any known method.\n", 1027}, +kernel.\n", 1029}, + {"Cannot access the Hardware Clock via any known method.\n", 1030}, {"\ Use the --debug option to see the details of our search for an access \ -method.\n", 1028}, - {"Waiting in loop for time from KDGHWCLK to change\n", 1029}, - {"KDGHWCLK ioctl to read time failed", 1030}, - {"Timed out waiting for time change.\n", 1031}, - {"KDGHWCLK ioctl to read time failed in loop", 1032}, - {"ioctl() failed to read time from %s", 1033}, - {"ioctl KDSHWCLK failed", 1034}, - {"Can't open /dev/tty1 or /dev/vc/1", 1035}, - {"KDGHWCLK ioctl failed", 1036}, - {"ioctl() to %s to read the time failed.\n", 1037}, - {"Waiting in loop for time from %s to change\n", 1038}, - {"open() of %s failed", 1039}, - {"%s does not have interrupt functions. ", 1040}, - {"read() to %s to wait for clock tick failed", 1041}, - {"ioctl() to %s to turn off update interrupts failed", 1042}, - {"ioctl() to %s to turn on update interrupts failed unexpectedly", 1043}, - {"Unable to open %s", 1044}, - {"ioctl() to %s to set the time failed.\n", 1045}, - {"ioctl(%s) was successful.\n", 1046}, - {"Open of %s failed", 1047}, +method.\n", 1031}, + {"Waiting in loop for time from KDGHWCLK to change\n", 1032}, + {"KDGHWCLK ioctl to read time failed", 1033}, + {"Timed out waiting for time change.\n", 1034}, + {"KDGHWCLK ioctl to read time failed in loop", 1035}, + {"ioctl() failed to read time from %s", 1036}, + {"ioctl KDSHWCLK failed", 1037}, + {"Can't open /dev/tty1 or /dev/vc/1", 1038}, + {"KDGHWCLK ioctl failed", 1039}, + {"ioctl() to %s to read the time failed.\n", 1040}, + {"Waiting in loop for time from %s to change\n", 1041}, + {"open() of %s failed", 1042}, + {"%s does not have interrupt functions. ", 1043}, + {"read() to %s to wait for clock tick failed", 1044}, + {"ioctl() to %s to turn off update interrupts failed", 1045}, + {"ioctl() to %s to turn on update interrupts failed unexpectedly", 1046}, + {"Unable to open %s", 1047}, + {"ioctl() to %s to set the time failed.\n", 1048}, + {"ioctl(%s) was successful.\n", 1049}, + {"Open of %s failed", 1050}, {"\ To manipulate the epoch value in the kernel, we must access the Linux 'rtc' \ device driver via the device special file %s. This file does not exist on \ -this system.\n", 1048}, - {"ioctl(RTC_EPOCH_READ) to %s failed", 1049}, - {"we have read epoch %ld from %s with RTC_EPOCH_READ ioctl.\n", 1050}, - {"The epoch value may not be less than 1900. You requested %ld\n", 1051}, - {"setting epoch to %ld with RTC_EPOCH_SET ioctl to %s.\n", 1052}, - {"\ -The kernel device driver for %s does not have the RTC_EPOCH_SET ioctl.\n", 1053}, - {"ioctl(RTC_EPOCH_SET) to %s failed", 1054}, - {"invalid number `%s'\n", 1055}, - {"number `%s' to `%s' out of range\n", 1056}, - {"unrecognized option `%s'\n", 1057}, - {"option `%s' requires an argument\n", 1058}, - {"option `%s' doesn't allow an argument\n", 1059}, - {"unrecognized option `-%c'\n", 1060}, - {"calling open_tty\n", 1061}, - {"calling termio_init\n", 1062}, - {"writing init string\n", 1063}, - {"before autobaud\n", 1064}, - {"waiting for cr-lf\n", 1065}, - {"read %c\n", 1066}, - {"reading login name\n", 1067}, - {"%s: can't exec %s: %m", 1068}, - {"can't malloc initstring", 1069}, - {"bad timeout value: %s", 1070}, - {"after getopt loop\n", 1071}, - {"exiting parseargs\n", 1072}, - {"entered parse_speeds\n", 1073}, - {"bad speed: %s", 1074}, - {"too many alternate speeds", 1075}, - {"exiting parsespeeds\n", 1076}, - {"/dev: chdir() failed: %m", 1077}, - {"/dev/%s: not a character device", 1078}, - {"open(2)\n", 1079}, - {"/dev/%s: cannot open as standard input: %m", 1080}, - {"%s: not open for read/write", 1081}, - {"duping\n", 1082}, - {"%s: dup problem: %m", 1083}, - {"term_io 2\n", 1084}, - {"user", 1085}, - {"users", 1086}, - {"%s: read: %m", 1087}, - {"%s: input overrun", 1088}, +this system.\n", 1051}, + {"ioctl(RTC_EPOCH_READ) to %s failed", 1052}, + {"we have read epoch %ld from %s with RTC_EPOCH_READ ioctl.\n", 1053}, + {"The epoch value may not be less than 1900. You requested %ld\n", 1054}, + {"setting epoch to %ld with RTC_EPOCH_SET ioctl to %s.\n", 1055}, + {"\ +The kernel device driver for %s does not have the RTC_EPOCH_SET ioctl.\n", 1056}, + {"ioctl(RTC_EPOCH_SET) to %s failed", 1057}, + {"invalid number `%s'\n", 1058}, + {"number `%s' to `%s' out of range\n", 1059}, + {"unrecognized option `%s'\n", 1060}, + {"option `%s' requires an argument\n", 1061}, + {"option `%s' doesn't allow an argument\n", 1062}, + {"unrecognized option `-%c'\n", 1063}, + {"calling open_tty\n", 1064}, + {"calling termio_init\n", 1065}, + {"writing init string\n", 1066}, + {"before autobaud\n", 1067}, + {"waiting for cr-lf\n", 1068}, + {"read %c\n", 1069}, + {"reading login name\n", 1070}, + {"%s: can't exec %s: %m", 1071}, + {"can't malloc initstring", 1072}, + {"bad timeout value: %s", 1073}, + {"after getopt loop\n", 1074}, + {"exiting parseargs\n", 1075}, + {"entered parse_speeds\n", 1076}, + {"bad speed: %s", 1077}, + {"too many alternate speeds", 1078}, + {"exiting parsespeeds\n", 1079}, + {"/dev: chdir() failed: %m", 1080}, + {"/dev/%s: not a character device", 1081}, + {"open(2)\n", 1082}, + {"/dev/%s: cannot open as standard input: %m", 1083}, + {"%s: not open for read/write", 1084}, + {"duping\n", 1085}, + {"%s: dup problem: %m", 1086}, + {"term_io 2\n", 1087}, + {"user", 1088}, + {"users", 1089}, + {"%s: read: %m", 1090}, + {"%s: input overrun", 1091}, {"\ Usage: %s [-hiLmw] [-l login_program] [-t timeout] [-I initstring] [-H \ login_host] baud_rate,... line [termtype]\n\ or\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] [-H login_host] \ -line baud_rate,... [termtype]\n", 1089}, - {"login: memory low, login may fail\n", 1090}, - {"can't malloc for ttyclass", 1091}, - {"can't malloc for grplist", 1092}, - {"Login on %s from %s denied by default.\n", 1093}, - {"Login on %s from %s denied.\n", 1094}, - {"%s: you (user %d) don't exist.\n", 1095}, - {"%s: user \"%s\" does not exist.\n", 1096}, - {"%s: can only change local entries; use yp%s instead.\n", 1097}, - {"Changing finger information for %s.\n", 1098}, - {"Password error.", 1099}, - {"Password: ", 1100}, - {"Incorrect password.", 1101}, - {"Finger information not changed.\n", 1102}, - {"Usage: %s [ -f full-name ] [ -o office ] ", 1103}, +line baud_rate,... [termtype]\n", 1092}, + {"login: memory low, login may fail\n", 1093}, + {"can't malloc for ttyclass", 1094}, + {"can't malloc for grplist", 1095}, + {"Login on %s from %s denied by default.\n", 1096}, + {"Login on %s from %s denied.\n", 1097}, + {"%s: you (user %d) don't exist.\n", 1098}, + {"%s: user \"%s\" does not exist.\n", 1099}, + {"%s: can only change local entries; use yp%s instead.\n", 1100}, + {"Changing finger information for %s.\n", 1101}, + {"Password error.", 1102}, + {"Password: ", 1103}, + {"Incorrect password.", 1104}, + {"Finger information not changed.\n", 1105}, + {"Usage: %s [ -f full-name ] [ -o office ] ", 1106}, {"\ [ -p office-phone ]\n\ -\t[ -h home-phone ] ", 1104}, - {"[ --help ] [ --version ]\n", 1105}, +\t[ -h home-phone ] ", 1107}, + {"[ --help ] [ --version ]\n", 1108}, {"\ \n\ -Aborted.\n", 1106}, - {"field is too long.\n", 1107}, - {"'%c' is not allowed.\n", 1108}, - {"Control characters are not allowed.\n", 1109}, - {"Finger information *NOT* changed. Try again later.\n", 1110}, - {"Finger information changed.\n", 1111}, - {"malloc failed", 1112}, - {"%s: Your shell is not in /etc/shells, shell change denied\n", 1113}, - {"Changing shell for %s.\n", 1114}, - {"New shell", 1115}, - {"Shell not changed.\n", 1116}, - {"Shell *NOT* changed. Try again later.\n", 1117}, - {"Shell changed.\n", 1118}, +Aborted.\n", 1109}, + {"field is too long.\n", 1110}, + {"'%c' is not allowed.\n", 1111}, + {"Control characters are not allowed.\n", 1112}, + {"Finger information *NOT* changed. Try again later.\n", 1113}, + {"Finger information changed.\n", 1114}, + {"malloc failed", 1115}, + {"%s: Your shell is not in /etc/shells, shell change denied\n", 1116}, + {"Changing shell for %s.\n", 1117}, + {"New shell", 1118}, + {"Shell not changed.\n", 1119}, + {"Shell *NOT* changed. Try again later.\n", 1120}, + {"Shell changed.\n", 1121}, {"\ Usage: %s [ -s shell ] [ --list-shells ] [ --help ] [ --version ]\n\ - [ username ]\n", 1119}, - {"%s: shell must be a full path name.\n", 1120}, - {"%s: \"%s\" does not exist.\n", 1121}, - {"%s: \"%s\" is not executable.\n", 1122}, - {"%s: '%c' is not allowed.\n", 1123}, - {"%s: Control characters are not allowed.\n", 1124}, - {"Warning: \"%s\" is not listed in /etc/shells\n", 1125}, - {"%s: \"%s\" is not listed in /etc/shells.\n", 1126}, - {"%s: use -l option to see list\n", 1127}, - {"Warning: \"%s\" is not listed in /etc/shells.\n", 1128}, - {"Use %s -l to see list.\n", 1129}, - {"No known shells.\n", 1130}, - {"couldn't open /dev/urandom", 1131}, - {"couldn't read random data from /dev/urandom", 1132}, - {"can't open %s for reading", 1133}, - {"can't stat(%s)", 1134}, - {"%s doesn't have the correct filemodes", 1135}, - {"can't read data from %s", 1136}, - {"Can't read %s, exiting.", 1137}, - {"usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n", 1138}, - {" still logged in", 1139}, + [ username ]\n", 1122}, + {"%s: shell must be a full path name.\n", 1123}, + {"%s: \"%s\" does not exist.\n", 1124}, + {"%s: \"%s\" is not executable.\n", 1125}, + {"%s: '%c' is not allowed.\n", 1126}, + {"%s: Control characters are not allowed.\n", 1127}, + {"Warning: \"%s\" is not listed in /etc/shells\n", 1128}, + {"%s: \"%s\" is not listed in /etc/shells.\n", 1129}, + {"%s: use -l option to see list\n", 1130}, + {"Warning: \"%s\" is not listed in /etc/shells.\n", 1131}, + {"Use %s -l to see list.\n", 1132}, + {"No known shells.\n", 1133}, + {"couldn't open /dev/urandom", 1134}, + {"couldn't read random data from /dev/urandom", 1135}, + {"can't open %s for reading", 1136}, + {"can't stat(%s)", 1137}, + {"%s doesn't have the correct filemodes", 1138}, + {"can't read data from %s", 1139}, + {"Can't read %s, exiting.", 1140}, + {"usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n", 1141}, + {" still logged in", 1142}, {"\ \n\ -wtmp begins %s", 1140}, - {"last: malloc failure.\n", 1141}, - {"last: gethostname", 1142}, +wtmp begins %s", 1143}, + {"last: malloc failure.\n", 1144}, + {"last: gethostname", 1145}, {"\ \n\ -interrupted %10.10s %5.5s \n", 1143}, - {"login: -h for super-user only.\n", 1144}, - {"usage: login [-fp] [username]\n", 1145}, - {"login: PAM Failure, aborting: %s\n", 1146}, - {"Couldn't initialize PAM: %s", 1147}, - {"login: ", 1148}, - {"FAILED LOGIN %d FROM %s FOR %s, %s", 1149}, +interrupted %10.10s %5.5s \n", 1146}, + {"login: -h for super-user only.\n", 1147}, + {"usage: login [-fp] [username]\n", 1148}, + {"login: PAM Failure, aborting: %s\n", 1149}, + {"Couldn't initialize PAM: %s", 1150}, + {"login: ", 1151}, + {"FAILED LOGIN %d FROM %s FOR %s, %s", 1152}, {"\ Login incorrect\n\ -\n", 1150}, - {"TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s", 1151}, - {"FAILED LOGIN SESSION FROM %s FOR %s, %s", 1152}, +\n", 1153}, + {"TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s", 1154}, + {"FAILED LOGIN SESSION FROM %s FOR %s, %s", 1155}, + {"\ +\n\ +Login incorrect\n", 1156}, {"\ \n\ -Login incorrect\n", 1153}, - {"Illegal username", 1154}, - {"%s login refused on this terminal.\n", 1155}, - {"LOGIN %s REFUSED FROM %s ON TTY %s", 1156}, - {"LOGIN %s REFUSED ON TTY %s", 1157}, - {"Login incorrect\n", 1158}, +Session setup problem, abort.\n", 1157}, + {"NULL user name in %s:%d. Abort.", 1158}, + {"Invalid user name \"%s\" in %s:%d. Abort.", 1159}, + {"login: Out of memory\n", 1160}, + {"Illegal username", 1161}, + {"%s login refused on this terminal.\n", 1162}, + {"LOGIN %s REFUSED FROM %s ON TTY %s", 1163}, + {"LOGIN %s REFUSED ON TTY %s", 1164}, + {"Login incorrect\n", 1165}, {"\ Too many users logged on already.\n\ -Try again later.\n", 1159}, - {"You have too many processes running.\n", 1160}, - {"DIALUP AT %s BY %s", 1161}, - {"ROOT LOGIN ON %s FROM %s", 1162}, - {"ROOT LOGIN ON %s", 1163}, - {"LOGIN ON %s BY %s FROM %s", 1164}, - {"LOGIN ON %s BY %s", 1165}, - {"You have %smail.\n", 1166}, - {"new ", 1167}, - {"login: failure forking: %s", 1168}, - {"setuid() failed", 1169}, - {"No directory %s!\n", 1170}, - {"Logging in with home = \"/\".\n", 1171}, - {"login: no memory for shell script.\n", 1172}, - {"login: couldn't exec shell script: %s.\n", 1173}, - {"login: no shell: %s.\n", 1174}, +Try again later.\n", 1166}, + {"You have too many processes running.\n", 1167}, + {"DIALUP AT %s BY %s", 1168}, + {"ROOT LOGIN ON %s FROM %s", 1169}, + {"ROOT LOGIN ON %s", 1170}, + {"LOGIN ON %s BY %s FROM %s", 1171}, + {"LOGIN ON %s BY %s", 1172}, + {"You have new mail.\n", 1173}, + {"You have mail.\n", 1174}, + {"login: failure forking: %s", 1175}, + {"setuid() failed", 1176}, + {"No directory %s!\n", 1177}, + {"Logging in with home = \"/\".\n", 1178}, + {"login: no memory for shell script.\n", 1179}, + {"login: couldn't exec shell script: %s.\n", 1180}, + {"login: no shell: %s.\n", 1181}, {"\ \n\ -%s login: ", 1175}, - {"login name much too long.\n", 1176}, - {"NAME too long", 1177}, - {"login names may not start with '-'.\n", 1178}, - {"too many bare linefeeds.\n", 1179}, - {"EXCESSIVE linefeeds", 1180}, - {"Login timed out after %d seconds\n", 1181}, - {"Last login: %.*s ", 1182}, - {"from %.*s\n", 1183}, - {"on %.*s\n", 1184}, - {"LOGIN FAILURE FROM %s, %s", 1185}, - {"LOGIN FAILURE ON %s, %s", 1186}, - {"%d LOGIN FAILURES FROM %s, %s", 1187}, - {"%d LOGIN FAILURES ON %s, %s", 1188}, - {"is y\n", 1189}, - {"is n\n", 1190}, - {"usage: mesg [y | n]\n", 1191}, - {"newgrp: Who are you?", 1192}, - {"newgrp: setgid", 1193}, - {"newgrp: No such group.", 1194}, - {"newgrp: Permission denied", 1195}, - {"newgrp: setuid", 1196}, - {"No shell", 1197}, - {"The password must have at least 6 characters, try again.\n", 1198}, - {"The password must contain characters out of two of the following\n", 1199}, - {"classes: upper and lower case letters, digits and non alphanumeric\n", 1200}, - {"characters. See passwd(1) for more information.\n", 1201}, - {"You cannot reuse the old password.\n", 1202}, - {"Please don't use something like your username as password!\n", 1203}, - {"Please don't use something like your realname as password!\n", 1204}, - {"Usage: passwd [username [password]]\n", 1205}, - {"Only root may use the one and two argument forms.\n", 1206}, - {"Usage: passwd [-foqsvV] [user [password]]\n", 1207}, - {"Can't exec %s: %s\n", 1208}, - {"Cannot find login name", 1209}, - {"Only root can change the password for others.\n", 1210}, - {"Too many arguments.\n", 1211}, - {"Can't find username anywhere. Is `%s' really a user?", 1212}, - {"Sorry, I can only change local passwords. Use yppasswd instead.", 1213}, - {"UID and username does not match, imposter!", 1214}, - {"Changing password for %s\n", 1215}, - {"Enter old password: ", 1216}, - {"Illegal password, imposter.", 1217}, - {"Enter new password: ", 1218}, - {"Password not changed.", 1219}, - {"Re-type new password: ", 1220}, - {"You misspelled it. Password not changed.", 1221}, - {"password changed, user %s", 1222}, - {"ROOT PASSWORD CHANGED", 1223}, - {"password changed by root, user %s", 1224}, - {"calling setpwnam to set password.\n", 1225}, - {"Password *NOT* changed. Try again later.\n", 1226}, - {"Password changed.\n", 1227}, - {"Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n", 1228}, - {"Shutdown process aborted", 1229}, - {"%s: Only root can shut a system down.\n", 1230}, - {"That must be tomorrow, can't you wait till then?\n", 1231}, - {"for maintenance; bounce, bounce", 1232}, - {"timeout = %d, quiet = %d, reboot = %d\n", 1233}, - {"The system is being shut down within 5 minutes", 1234}, - {"Login is therefore prohibited.", 1235}, - {"%s by %s: %s", 1236}, - {"rebooted", 1237}, - {"halted", 1238}, +%s login: ", 1182}, + {"login name much too long.\n", 1183}, + {"NAME too long", 1184}, + {"login names may not start with '-'.\n", 1185}, + {"too many bare linefeeds.\n", 1186}, + {"EXCESSIVE linefeeds", 1187}, + {"Login timed out after %d seconds\n", 1188}, + {"Last login: %.*s ", 1189}, + {"from %.*s\n", 1190}, + {"on %.*s\n", 1191}, + {"LOGIN FAILURE FROM %s, %s", 1192}, + {"LOGIN FAILURE ON %s, %s", 1193}, + {"%d LOGIN FAILURES FROM %s, %s", 1194}, + {"%d LOGIN FAILURES ON %s, %s", 1195}, + {"is y\n", 1196}, + {"is n\n", 1197}, + {"usage: mesg [y | n]\n", 1198}, + {"newgrp: Who are you?", 1199}, + {"newgrp: setgid", 1200}, + {"newgrp: No such group.", 1201}, + {"newgrp: Permission denied", 1202}, + {"newgrp: setuid", 1203}, + {"No shell", 1204}, + {"The password must have at least 6 characters, try again.\n", 1205}, + {"\ +The password must contain characters out of two of the following\n\ +classes: upper and lower case letters, digits and non alphanumeric\n\ +characters. See passwd(1) for more information.\n", 1206}, + {"You cannot reuse the old password.\n", 1207}, + {"Please don't use something like your username as password!\n", 1208}, + {"Please don't use something like your realname as password!\n", 1209}, + {"Usage: passwd [username [password]]\n", 1210}, + {"Only root may use the one and two argument forms.\n", 1211}, + {"Usage: passwd [-foqsvV] [user [password]]\n", 1212}, + {"Can't exec %s: %s\n", 1213}, + {"Cannot find login name", 1214}, + {"Only root can change the password for others.\n", 1215}, + {"Too many arguments.\n", 1216}, + {"Can't find username anywhere. Is `%s' really a user?", 1217}, + {"Sorry, I can only change local passwords. Use yppasswd instead.", 1218}, + {"UID and username does not match, imposter!", 1219}, + {"Changing password for %s\n", 1220}, + {"Enter old password: ", 1221}, + {"Illegal password, imposter.", 1222}, + {"Enter new password: ", 1223}, + {"Password not changed.", 1224}, + {"Re-type new password: ", 1225}, + {"You misspelled it. Password not changed.", 1226}, + {"password changed, user %s", 1227}, + {"ROOT PASSWORD CHANGED", 1228}, + {"password changed by root, user %s", 1229}, + {"calling setpwnam to set password.\n", 1230}, + {"Password *NOT* changed. Try again later.\n", 1231}, + {"Password changed.\n", 1232}, + {"Usage: shutdown [-h|-r] [-fqs] [now|hh:ss|+mins]\n", 1233}, + {"Shutdown process aborted", 1234}, + {"%s: Only root can shut a system down.\n", 1235}, + {"That must be tomorrow, can't you wait till then?\n", 1236}, + {"for maintenance; bounce, bounce", 1237}, + {"timeout = %d, quiet = %d, reboot = %d\n", 1238}, + {"The system is being shut down within 5 minutes", 1239}, + {"Login is therefore prohibited.", 1240}, + {"rebooted by %s: %s", 1241}, + {"halted by %s: %s", 1242}, {"\ \n\ -Why am I still alive after reboot?", 1239}, +Why am I still alive after reboot?", 1243}, {"\ \n\ -Now you can turn off the power...", 1240}, - {"Calling kernel power-off facility...\n", 1241}, - {"Error powering off\t%s\n", 1242}, - {"Executing the program \"%s\" ...\n", 1243}, - {"Error executing\t%s\n", 1244}, - {"URGENT: broadcast message from %s:", 1245}, - {"System going down in %d hours %d minutes", 1246}, - {"System going down in 1 hour %d minutes", 1247}, - {"System going down in %d minutes\n", 1248}, - {"System going down in 1 minute\n", 1249}, - {"System going down IMMEDIATELY!\n", 1250}, - {"\t... %s ...\n", 1251}, - {"Cannot fork for swapoff. Shrug!", 1252}, - {"Cannot exec swapoff, hoping umount will do the trick.", 1253}, - {"Cannot fork for umount, trying manually.", 1254}, - {"Cannot exec %s, trying umount.\n", 1255}, - {"Cannot exec umount, giving up on umount.", 1256}, - {"Unmounting any remaining filesystems...", 1257}, - {"shutdown: Couldn't umount %s: %s\n", 1258}, - {"Booting to single user mode.\n", 1259}, - {"exec of single user shell failed\n", 1260}, - {"fork of single user shell failed\n", 1261}, - {"error opening fifo\n", 1262}, - {"error running finalprog\n", 1263}, - {"error forking finalprog\n", 1264}, +Now you can turn off the power...", 1244}, + {"Calling kernel power-off facility...\n", 1245}, + {"Error powering off\t%s\n", 1246}, + {"Executing the program \"%s\" ...\n", 1247}, + {"Error executing\t%s\n", 1248}, + {"URGENT: broadcast message from %s:", 1249}, + {"System going down in %d hours %d minutes", 1250}, + {"System going down in 1 hour %d minutes", 1251}, + {"System going down in %d minutes\n", 1252}, + {"System going down in 1 minute\n", 1253}, + {"System going down IMMEDIATELY!\n", 1254}, + {"\t... %s ...\n", 1255}, + {"Cannot fork for swapoff. Shrug!", 1256}, + {"Cannot exec swapoff, hoping umount will do the trick.", 1257}, + {"Cannot fork for umount, trying manually.", 1258}, + {"Cannot exec %s, trying umount.\n", 1259}, + {"Cannot exec umount, giving up on umount.", 1260}, + {"Unmounting any remaining filesystems...", 1261}, + {"shutdown: Couldn't umount %s: %s\n", 1262}, + {"Booting to single user mode.\n", 1263}, + {"exec of single user shell failed\n", 1264}, + {"fork of single user shell failed\n", 1265}, + {"error opening fifo\n", 1266}, + {"error running finalprog\n", 1267}, + {"error forking finalprog\n", 1268}, {"\ \n\ -Wrong password.\n", 1265}, - {"lstat of path failed\n", 1266}, - {"stat of path failed\n", 1267}, - {"open of directory failed\n", 1268}, - {"fork failed\n", 1269}, - {"exec failed\n", 1270}, - {"cannot open inittab\n", 1271}, - {"no TERM or cannot stat tty\n", 1272}, - {"error stopping service: \"%s\"", 1273}, - {"too many iov's (change code in wall/ttymsg.c)", 1274}, - {"excessively long line arg", 1275}, - {"cannot fork", 1276}, - {"fork: %s", 1277}, - {"%s: BAD ERROR", 1278}, - {"%s: the %s file is busy.\n", 1279}, - {"%s: the %s file is busy (%s present)\n", 1280}, - {"%s: can't link %s: %s\n", 1281}, - {"%s: can't unlock %s: %s (your changes are still in %s)\n", 1282}, - {"%s: Cannot fork\n", 1283}, - {"%s: %s unchanged\n", 1284}, - {"%s: no changes made\n", 1285}, - {"You are using shadow groups on this system.\n", 1286}, - {"You are using shadow passwords on this system.\n", 1287}, - {"Would you like to edit %s now [y/n]? ", 1288}, - {"usage: %s [file]\n", 1289}, - {"%s: can't open temporary file.\n", 1290}, - {"Broadcast Message from %s@%s", 1291}, - {"%s: will not read %s - use stdin.\n", 1292}, - {"%s: can't read %s.\n", 1293}, - {"%s: can't stat temporary file.\n", 1294}, - {"%s: can't read temporary file.\n", 1295}, - {"illegal month value: use 1-12", 1296}, - {"illegal year value: use 1-9999", 1297}, - {"usage: cal [-mjyV] [[month] year]\n", 1298}, - {"usage: %s [+format] [day month year]\n", 1299}, - {"St. Tib's Day", 1300}, - {"%s: unknown signal %s\n", 1301}, - {"%s: can't find process \"%s\"\n", 1302}, - {"%s: unknown signal %s; valid signals:\n", 1303}, - {"usage: %s [ -s signal | -p ] [ -a ] pid ...\n", 1304}, - {" %s -l [ signal ]\n", 1305}, - {"logger: %s: %s.\n", 1306}, - {"logger: unknown facility name: %s.\n", 1307}, - {"logger: unknown priority name: %s.\n", 1308}, - {"\ -usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n", 1309}, - {"usage: look [-dfa] [-t char] string [file]\n", 1310}, - {"Could not open %s\n", 1311}, - {"Got %d bytes from %s\n", 1312}, - {"namei: unable to get current directory - %s\n", 1313}, - {"namei: unable to chdir to %s - %s (%d)\n", 1314}, - {"usage: namei [-mx] pathname [pathname ...]\n", 1315}, - {"namei: could not chdir to root!\n", 1316}, - {"namei: could not stat root!\n", 1317}, - {" ? could not chdir into %s - %s (%d)\n", 1318}, - {" ? problems reading symlink %s - %s (%d)\n", 1319}, - {" *** EXCEEDED UNIX LIMIT OF SYMLINKS ***\n", 1320}, - {"namei: unknown file type 0%06o on file %s\n", 1321}, - {"%s: out of memory\n", 1322}, - {"%s: renaming %s to %s failed: %s\n", 1323}, - {"call: %s from to files...\n", 1324}, +Wrong password.\n", 1269}, + {"lstat of path failed\n", 1270}, + {"stat of path failed\n", 1271}, + {"open of directory failed\n", 1272}, + {"fork failed\n", 1273}, + {"exec failed\n", 1274}, + {"cannot open inittab\n", 1275}, + {"no TERM or cannot stat tty\n", 1276}, + {"error stopping service: \"%s\"", 1277}, + {"too many iov's (change code in wall/ttymsg.c)", 1278}, + {"excessively long line arg", 1279}, + {"cannot fork", 1280}, + {"fork: %s", 1281}, + {"%s: BAD ERROR", 1282}, + {"%s: the password file is busy.\n", 1283}, + {"%s: the group file is busy.\n", 1284}, + {"%s: the %s file is busy (%s present)\n", 1285}, + {"%s: can't link %s: %s\n", 1286}, + {"%s: can't unlock %s: %s (your changes are still in %s)\n", 1287}, + {"%s: Cannot fork\n", 1288}, + {"%s: %s unchanged\n", 1289}, + {"%s: no changes made\n", 1290}, + {"You are using shadow groups on this system.\n", 1291}, + {"You are using shadow passwords on this system.\n", 1292}, + {"Would you like to edit %s now [y/n]? ", 1293}, + {"usage: %s [file]\n", 1294}, + {"%s: can't open temporary file.\n", 1295}, + {"Broadcast Message from %s@%s", 1296}, + {"%s: will not read %s - use stdin.\n", 1297}, + {"%s: can't read %s.\n", 1298}, + {"%s: can't stat temporary file.\n", 1299}, + {"%s: can't read temporary file.\n", 1300}, + {"illegal month value: use 1-12", 1301}, + {"illegal year value: use 1-9999", 1302}, + {"%s %d", 1303}, + {"usage: cal [-mjyV] [[month] year]\n", 1304}, + {"usage: %s [+format] [day month year]\n", 1305}, + {"St. Tib's Day", 1306}, + {"%s: unknown signal %s\n", 1307}, + {"%s: can't find process \"%s\"\n", 1308}, + {"%s: unknown signal %s; valid signals:\n", 1309}, + {"usage: %s [ -s signal | -p ] [ -a ] pid ...\n", 1310}, + {" %s -l [ signal ]\n", 1311}, + {"logger: %s: %s.\n", 1312}, + {"logger: unknown facility name: %s.\n", 1313}, + {"logger: unknown priority name: %s.\n", 1314}, + {"\ +usage: logger [-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]\n", 1315}, + {"usage: look [-dfa] [-t char] string [file]\n", 1316}, + {"Could not open %s\n", 1317}, + {"Got %d bytes from %s\n", 1318}, + {"namei: unable to get current directory - %s\n", 1319}, + {"namei: unable to chdir to %s - %s (%d)\n", 1320}, + {"usage: namei [-mx] pathname [pathname ...]\n", 1321}, + {"namei: could not chdir to root!\n", 1322}, + {"namei: could not stat root!\n", 1323}, + {"namei: buf overflow\n", 1324}, + {" ? could not chdir into %s - %s (%d)\n", 1325}, + {" ? problems reading symlink %s - %s (%d)\n", 1326}, + {" *** EXCEEDED UNIX LIMIT OF SYMLINKS ***\n", 1327}, + {"namei: unknown file type 0%06o on file %s\n", 1328}, + {"%s: out of memory\n", 1329}, + {"%s: renaming %s to %s failed: %s\n", 1330}, + {"call: %s from to files...\n", 1331}, {"\ Warning: `%s' is a symlink.\n\ Use `%s [options] %s' if you really want to use it.\n\ -Script not started.\n", 1325}, - {"usage: script [-a] [-f] [-q] [file]\n", 1326}, - {"Script started, file is %s\n", 1327}, - {"Script started on %s", 1328}, +Script not started.\n", 1332}, + {"usage: script [-a] [-f] [-q] [-t] [file]\n", 1333}, + {"Script started, file is %s\n", 1334}, + {"Script started on %s", 1335}, {"\ \n\ -Script done on %s", 1329}, - {"Script done, file is %s\n", 1330}, - {"openpty failed\n", 1331}, - {"Out of pty's\n", 1332}, - {"%s: Argument error, usage\n", 1333}, - {" [ -term terminal_name ]\n", 1334}, - {" [ -reset ]\n", 1335}, - {" [ -initialize ]\n", 1336}, - {" [ -cursor [on|off] ]\n", 1337}, - {" [ -snow [on|off] ]\n", 1338}, - {" [ -softscroll [on|off] ]\n", 1339}, - {" [ -repeat [on|off] ]\n", 1340}, - {" [ -appcursorkeys [on|off] ]\n", 1341}, - {" [ -linewrap [on|off] ]\n", 1342}, - {" [ -default ]\n", 1343}, - {" [ -foreground black|blue|green|cyan", 1344}, - {"|red|magenta|yellow|white|default ]\n", 1345}, - {" [ -background black|blue|green|cyan", 1346}, - {" [ -ulcolor black|grey|blue|green|cyan", 1347}, - {"|red|magenta|yellow|white ]\n", 1348}, - {" [ -ulcolor bright blue|green|cyan", 1349}, - {" [ -hbcolor black|grey|blue|green|cyan", 1350}, - {" [ -hbcolor bright blue|green|cyan", 1351}, - {" [ -standout [ attr ] ]\n", 1352}, - {" [ -inversescreen [on|off] ]\n", 1353}, - {" [ -bold [on|off] ]\n", 1354}, - {" [ -half-bright [on|off] ]\n", 1355}, - {" [ -blink [on|off] ]\n", 1356}, - {" [ -reverse [on|off] ]\n", 1357}, - {" [ -underline [on|off] ]\n", 1358}, - {" [ -store ]\n", 1359}, - {" [ -clear [all|rest] ]\n", 1360}, - {" [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n", 1361}, - {" [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n", 1362}, - {" [ -regtabs [1-160] ]\n", 1363}, - {" [ -blank [0-60] ]\n", 1364}, - {" [ -dump [1-NR_CONSOLES] ]\n", 1365}, - {" [ -append [1-NR_CONSOLES] ]\n", 1366}, - {" [ -file dumpfilename ]\n", 1367}, - {" [ -msg [on|off] ]\n", 1368}, - {" [ -msglevel [0-8] ]\n", 1369}, - {" [ -powersave [on|vsync|hsync|powerdown|off] ]\n", 1370}, - {" [ -powerdown [0-60] ]\n", 1371}, - {" [ -blength [0-2000] ]\n", 1372}, - {" [ -bfreq freqnumber ]\n", 1373}, - {"cannot (un)set powersave mode\n", 1374}, - {"klogctl error: %s\n", 1375}, - {"Error reading %s\n", 1376}, - {"Error writing screendump\n", 1377}, - {"couldn't read %s, and cannot ioctl dump\n", 1378}, - {"%s: $TERM is not defined.\n", 1379}, - {"whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n", 1380}, - {"write: can't find your tty's name\n", 1381}, - {"write: you have write permission turned off.\n", 1382}, - {"write: %s is not logged in on %s.\n", 1383}, - {"write: %s has messages disabled on %s\n", 1384}, - {"usage: write user [tty]\n", 1385}, - {"write: %s is not logged in\n", 1386}, - {"write: %s has messages disabled\n", 1387}, - {"write: %s is logged in more than once; writing to %s\n", 1388}, - {"Message from %s@%s (as %s) on %s at %s ...", 1389}, - {"Message from %s@%s on %s at %s ...", 1390}, - {"warning: error reading %s: %s", 1391}, - {"warning: can't open %s: %s", 1392}, - {"mount: could not open %s - using %s instead\n", 1393}, - {"can't create lock file %s: %s (use -n flag to override)", 1394}, - {"can't link lock file %s: %s (use -n flag to override)", 1395}, - {"can't open lock file %s: %s (use -n flag to override)", 1396}, - {"Can't lock lock file %s: %s\n", 1397}, - {"can't lock lock file %s: %s", 1398}, - {"timed out", 1399}, +Script done on %s", 1336}, + {"Script done, file is %s\n", 1337}, + {"openpty failed\n", 1338}, + {"Out of pty's\n", 1339}, + {"%s: Argument error, usage\n", 1340}, + {" [ -term terminal_name ]\n", 1341}, + {" [ -reset ]\n", 1342}, + {" [ -initialize ]\n", 1343}, + {" [ -cursor [on|off] ]\n", 1344}, + {" [ -snow [on|off] ]\n", 1345}, + {" [ -softscroll [on|off] ]\n", 1346}, + {" [ -repeat [on|off] ]\n", 1347}, + {" [ -appcursorkeys [on|off] ]\n", 1348}, + {" [ -linewrap [on|off] ]\n", 1349}, + {" [ -default ]\n", 1350}, + {" [ -foreground black|blue|green|cyan", 1351}, + {"|red|magenta|yellow|white|default ]\n", 1352}, + {" [ -background black|blue|green|cyan", 1353}, + {" [ -ulcolor black|grey|blue|green|cyan", 1354}, + {"|red|magenta|yellow|white ]\n", 1355}, + {" [ -ulcolor bright blue|green|cyan", 1356}, + {" [ -hbcolor black|grey|blue|green|cyan", 1357}, + {" [ -hbcolor bright blue|green|cyan", 1358}, + {" [ -standout [ attr ] ]\n", 1359}, + {" [ -inversescreen [on|off] ]\n", 1360}, + {" [ -bold [on|off] ]\n", 1361}, + {" [ -half-bright [on|off] ]\n", 1362}, + {" [ -blink [on|off] ]\n", 1363}, + {" [ -reverse [on|off] ]\n", 1364}, + {" [ -underline [on|off] ]\n", 1365}, + {" [ -store ]\n", 1366}, + {" [ -clear [all|rest] ]\n", 1367}, + {" [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n", 1368}, + {" [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n", 1369}, + {" [ -regtabs [1-160] ]\n", 1370}, + {" [ -blank [0-60] ]\n", 1371}, + {" [ -dump [1-NR_CONSOLES] ]\n", 1372}, + {" [ -append [1-NR_CONSOLES] ]\n", 1373}, + {" [ -file dumpfilename ]\n", 1374}, + {" [ -msg [on|off] ]\n", 1375}, + {" [ -msglevel [0-8] ]\n", 1376}, + {" [ -powersave [on|vsync|hsync|powerdown|off] ]\n", 1377}, + {" [ -powerdown [0-60] ]\n", 1378}, + {" [ -blength [0-2000] ]\n", 1379}, + {" [ -bfreq freqnumber ]\n", 1380}, + {"cannot (un)set powersave mode\n", 1381}, + {"klogctl error: %s\n", 1382}, + {"Error reading %s\n", 1383}, + {"Error writing screendump\n", 1384}, + {"couldn't read %s, and cannot ioctl dump\n", 1385}, + {"%s: $TERM is not defined.\n", 1386}, + {"whereis [ -sbmu ] [ -SBM dir ... -f ] name...\n", 1387}, + {"write: can't find your tty's name\n", 1388}, + {"write: you have write permission turned off.\n", 1389}, + {"write: %s is not logged in on %s.\n", 1390}, + {"write: %s has messages disabled on %s\n", 1391}, + {"usage: write user [tty]\n", 1392}, + {"write: %s is not logged in\n", 1393}, + {"write: %s has messages disabled\n", 1394}, + {"write: %s is logged in more than once; writing to %s\n", 1395}, + {"Message from %s@%s (as %s) on %s at %s ...", 1396}, + {"Message from %s@%s on %s at %s ...", 1397}, + {"warning: error reading %s: %s", 1398}, + {"warning: can't open %s: %s", 1399}, + {"mount: could not open %s - using %s instead\n", 1400}, + {"can't create lock file %s: %s (use -n flag to override)", 1401}, + {"can't link lock file %s: %s (use -n flag to override)", 1402}, + {"can't open lock file %s: %s (use -n flag to override)", 1403}, + {"Can't lock lock file %s: %s\n", 1404}, + {"can't lock lock file %s: %s", 1405}, + {"timed out", 1406}, {"\ Cannot create link %s\n\ -Perhaps there is a stale lock file?\n", 1400}, - {"cannot open %s (%s) - mtab not updated", 1401}, - {"error writing %s: %s", 1402}, - {"error changing mode of %s: %s\n", 1403}, - {"can't rename %s to %s: %s\n", 1404}, - {"loop: can't open device %s: %s\n", 1405}, - {"loop: can't get info on device %s: %s\n", 1406}, - {"%s: [%04x]:%ld (%s) offset %d, %s encryption\n", 1407}, - {"mount: could not find any device /dev/loop#", 1408}, +Perhaps there is a stale lock file?\n", 1407}, + {"cannot open %s (%s) - mtab not updated", 1408}, + {"error writing %s: %s", 1409}, + {"error changing mode of %s: %s\n", 1410}, + {"can't rename %s to %s: %s\n", 1411}, + {"loop: can't open device %s: %s\n", 1412}, + {"loop: can't get info on device %s: %s\n", 1413}, + {"%s: [%04x]:%ld (%s) offset %d, %s encryption\n", 1414}, + {"mount: could not find any device /dev/loop#", 1415}, {"\ mount: Could not find any loop device.\n\ - Maybe /dev/loop# has a wrong major number?", 1409}, + Maybe /dev/loop# has a wrong major number?", 1416}, {"\ mount: Could not find any loop device, and, according to %s,\n\ this kernel does not know about the loop device.\n\ - (If so, then recompile or `insmod loop.o'.)", 1410}, + (If so, then recompile or `insmod loop.o'.)", 1417}, {"\ mount: Could not find any loop device. Maybe this kernel does not know\n\ about the loop device (then recompile or `insmod loop.o'), or\n\ - maybe /dev/loop# has the wrong major number?", 1411}, - {"mount: could not find any free loop device", 1412}, - {"Unsupported encryption type %s\n", 1413}, - {"Couldn't lock into memory, exiting.\n", 1414}, - {"Init (up to 16 hex digits): ", 1415}, - {"Non-hex digit '%c'.\n", 1416}, - {"Don't know how to get key for encryption system %d\n", 1417}, - {"set_loop(%s,%s,%d): success\n", 1418}, - {"loop: can't delete device %s: %s\n", 1419}, - {"del_loop(%s): success\n", 1420}, - {"This mount was compiled without loop support. Please recompile.\n", 1421}, + maybe /dev/loop# has the wrong major number?", 1418}, + {"mount: could not find any free loop device", 1419}, + {"Unsupported encryption type %s\n", 1420}, + {"Couldn't lock into memory, exiting.\n", 1421}, + {"Init (up to 16 hex digits): ", 1422}, + {"Non-hex digit '%c'.\n", 1423}, + {"Don't know how to get key for encryption system %d\n", 1424}, + {"set_loop(%s,%s,%d): success\n", 1425}, + {"loop: can't delete device %s: %s\n", 1426}, + {"del_loop(%s): success\n", 1427}, + {"This mount was compiled without loop support. Please recompile.\n", 1428}, {"\ usage:\n\ %s loop_device # give info\n\ %s -d loop_device # delete\n\ - %s [ -e encryption ] [ -o offset ] loop_device file # setup\n", 1422}, - {"not enough memory", 1423}, - {"No loop support was available at compile time. Please recompile.\n", 1424}, - {"[mntent]: warning: no final newline at the end of %s\n", 1425}, - {"[mntent]: line %d in %s is bad%s\n", 1426}, - {"; rest of file ignored", 1427}, - {"mount: according to mtab, %s is already mounted on %s", 1428}, - {"mount: according to mtab, %s is mounted on %s", 1429}, - {"mount: can't open %s for writing: %s", 1430}, - {"mount: error writing %s: %s", 1431}, - {"mount: error changing mode of %s: %s", 1432}, - {"%s looks like swapspace - not mounted", 1433}, - {"mount failed", 1434}, - {"mount: only root can mount %s on %s", 1435}, - {"mount: loop device specified twice", 1436}, - {"mount: type specified twice", 1437}, - {"mount: skipping the setup of a loop device\n", 1438}, - {"mount: going to use the loop device %s\n", 1439}, - {"mount: failed setting up loop device\n", 1440}, - {"mount: setup loop device successfully\n", 1441}, - {"mount: can't open %s: %s", 1442}, - {"mount: cannot not open %s for setting speed", 1443}, - {"mount: cannot set speed: %s", 1444}, - {"mount: cannot fork: %s", 1445}, - {"mount: this version was compiled without support for the type `nfs'", 1446}, - {"mount: failed with nfs mount version 4, trying 3..\n", 1447}, - {"\ -mount: I could not determine the filesystem type, and none was specified", 1448}, - {"mount: you must specify the filesystem type", 1449}, - {"mount: mount failed", 1450}, - {"mount: mount point %s is not a directory", 1451}, - {"mount: permission denied", 1452}, - {"mount: must be superuser to use mount", 1453}, - {"mount: %s is busy", 1454}, - {"mount: proc already mounted", 1455}, - {"mount: %s already mounted or %s busy", 1456}, - {"mount: mount point %s does not exist", 1457}, - {"mount: mount point %s is a symbolic link to nowhere", 1458}, - {"mount: special device %s does not exist", 1459}, + %s [ -e encryption ] [ -o offset ] loop_device file # setup\n", 1429}, + {"not enough memory", 1430}, + {"No loop support was available at compile time. Please recompile.\n", 1431}, + {"[mntent]: warning: no final newline at the end of %s\n", 1432}, + {"[mntent]: line %d in %s is bad%s\n", 1433}, + {"; rest of file ignored", 1434}, + {"mount: according to mtab, %s is already mounted on %s", 1435}, + {"mount: according to mtab, %s is mounted on %s", 1436}, + {"mount: can't open %s for writing: %s", 1437}, + {"mount: error writing %s: %s", 1438}, + {"mount: error changing mode of %s: %s", 1439}, + {"%s looks like swapspace - not mounted", 1440}, + {"mount failed", 1441}, + {"mount: only root can mount %s on %s", 1442}, + {"mount: loop device specified twice", 1443}, + {"mount: type specified twice", 1444}, + {"mount: skipping the setup of a loop device\n", 1445}, + {"mount: going to use the loop device %s\n", 1446}, + {"mount: failed setting up loop device\n", 1447}, + {"mount: setup loop device successfully\n", 1448}, + {"mount: can't open %s: %s", 1449}, + {"mount: cannot not open %s for setting speed", 1450}, + {"mount: cannot set speed: %s", 1451}, + {"mount: cannot fork: %s", 1452}, + {"mount: this version was compiled without support for the type `nfs'", 1453}, + {"mount: failed with nfs mount version 4, trying 3..\n", 1454}, + {"\ +mount: I could not determine the filesystem type, and none was specified", 1455}, + {"mount: you must specify the filesystem type", 1456}, + {"mount: mount failed", 1457}, + {"mount: mount point %s is not a directory", 1458}, + {"mount: permission denied", 1459}, + {"mount: must be superuser to use mount", 1460}, + {"mount: %s is busy", 1461}, + {"mount: proc already mounted", 1462}, + {"mount: %s already mounted or %s busy", 1463}, + {"mount: mount point %s does not exist", 1464}, + {"mount: mount point %s is a symbolic link to nowhere", 1465}, + {"mount: special device %s does not exist", 1466}, {"\ mount: special device %s does not exist\n\ - (a path prefix is not a directory)\n", 1460}, - {"mount: %s not mounted already, or bad option", 1461}, + (a path prefix is not a directory)\n", 1467}, + {"mount: %s not mounted already, or bad option", 1468}, {"\ mount: wrong fs type, bad option, bad superblock on %s,\n\ - or too many mounted file systems", 1462}, - {"mount table full", 1463}, - {"mount: %s: can't read superblock", 1464}, - {"mount: %s: unknown device", 1465}, - {"mount: fs type %s not supported by kernel", 1466}, - {"mount: probably you meant %s", 1467}, - {"mount: maybe you meant iso9660 ?", 1468}, - {"mount: %s has wrong device number or fs type %s not supported", 1469}, - {"mount: %s is not a block device, and stat fails?", 1470}, + or too many mounted file systems", 1469}, + {"mount table full", 1470}, + {"mount: %s: can't read superblock", 1471}, + {"mount: %s: unknown device", 1472}, + {"mount: fs type %s not supported by kernel", 1473}, + {"mount: probably you meant %s", 1474}, + {"mount: maybe you meant iso9660 ?", 1475}, + {"mount: %s has wrong device number or fs type %s not supported", 1476}, + {"mount: %s is not a block device, and stat fails?", 1477}, {"\ mount: the kernel does not recognize %s as a block device\n\ - (maybe `insmod driver'?)", 1471}, - {"mount: %s is not a block device (maybe try `-o loop'?)", 1472}, - {"mount: %s is not a block device", 1473}, - {"mount: %s is not a valid block device", 1474}, - {"block device ", 1475}, - {"mount: cannot mount %s%s read-only", 1476}, - {"mount: %s%s is write-protected but explicit `-w' flag given", 1477}, - {"mount: %s%s is write-protected, mounting read-only", 1478}, - {"mount: going to mount %s by %s\n", 1479}, - {"UUID", 1480}, - {"label", 1481}, - {"mount: no such partition found", 1482}, - {"mount: no type was given - I'll assume nfs because of the colon\n", 1483}, - {"mount: backgrounding \"%s\"\n", 1484}, - {"mount: giving up \"%s\"\n", 1485}, - {"mount: %s already mounted on %s\n", 1486}, + (maybe `insmod driver'?)", 1478}, + {"mount: %s is not a block device (maybe try `-o loop'?)", 1479}, + {"mount: %s is not a block device", 1480}, + {"mount: %s is not a valid block device", 1481}, + {"block device ", 1482}, + {"mount: cannot mount %s%s read-only", 1483}, + {"mount: %s%s is write-protected but explicit `-w' flag given", 1484}, + {"mount: %s%s is write-protected, mounting read-only", 1485}, + {"mount: going to mount %s by %s\n", 1486}, + {"UUID", 1487}, + {"label", 1488}, + {"mount: no such partition found", 1489}, + {"mount: no type was given - I'll assume nfs because of the colon\n", 1490}, + {"mount: backgrounding \"%s\"\n", 1491}, + {"mount: giving up \"%s\"\n", 1492}, + {"mount: %s already mounted on %s\n", 1493}, {"\ Usage: mount -V : print version\n\ mount -h : print this help\n\ @@ -1950,271 +1968,269 @@ One can also mount an already visible directory tree elsewhere:\n\ A device can be given by name, say /dev/hda1 or /dev/cdrom,\n\ or by label, using -L label or by uuid, using -U uuid .\n\ Other options: [-nfFrsvw] [-o options].\n\ -For many more details, say man 8 mount .\n", 1487}, - {"mount: only root can do that", 1488}, - {"mount: no %s found - creating it..\n", 1489}, - {"mount: mounting %s\n", 1490}, - {"nothing was mounted", 1491}, - {"mount: cannot find %s in %s", 1492}, - {"mount: can't find %s in %s or %s", 1493}, - {"\ -mount: could not open %s, so UUID and LABEL conversion cannot be done.\n", 1494}, - {"mount: bad UUID", 1495}, - {"mount: you didn't specify a filesystem type for %s\n", 1496}, - {" I will try all types mentioned in %s or %s\n", 1497}, - {" and it looks like this is swapspace\n", 1498}, - {" I will try type %s\n", 1499}, - {"Trying %s\n", 1500}, - {"mount: excessively long host:dir argument\n", 1501}, - {"mount: warning: multiple hostnames not supported\n", 1502}, - {"mount: directory to mount not in host:dir format\n", 1503}, - {"mount: can't get address for %s\n", 1504}, - {"mount: got bad hp->h_length\n", 1505}, - {"mount: excessively long option argument\n", 1506}, - {"Warning: Unrecognized proto= option.\n", 1507}, - {"Warning: Option namlen is not supported.\n", 1508}, - {"unknown nfs mount parameter: %s=%d\n", 1509}, - {"Warning: option nolock is not supported.\n", 1510}, - {"unknown nfs mount option: %s%s\n", 1511}, - {"mount: got bad hp->h_length?\n", 1512}, - {"NFS over TCP is not supported.\n", 1513}, - {"nfs socket", 1514}, - {"nfs bindresvport", 1515}, - {"nfs server reported service unavailable", 1516}, - {"used portmapper to find NFS port\n", 1517}, - {"using port %d for nfs deamon\n", 1518}, - {"nfs connect", 1519}, - {"unknown nfs status return value: %d", 1520}, - {"bug in xstrndup call", 1521}, +For many more details, say man 8 mount .\n", 1494}, + {"mount: only root can do that", 1495}, + {"mount: no %s found - creating it..\n", 1496}, + {"mount: mounting %s\n", 1497}, + {"nothing was mounted", 1498}, + {"mount: cannot find %s in %s", 1499}, + {"mount: can't find %s in %s or %s", 1500}, + {"\ +mount: could not open %s, so UUID and LABEL conversion cannot be done.\n", 1501}, + {"mount: bad UUID", 1502}, + {"mount: you didn't specify a filesystem type for %s\n", 1503}, + {" I will try all types mentioned in %s or %s\n", 1504}, + {" and it looks like this is swapspace\n", 1505}, + {" I will try type %s\n", 1506}, + {"Trying %s\n", 1507}, + {"mount: excessively long host:dir argument\n", 1508}, + {"mount: warning: multiple hostnames not supported\n", 1509}, + {"mount: directory to mount not in host:dir format\n", 1510}, + {"mount: can't get address for %s\n", 1511}, + {"mount: got bad hp->h_length\n", 1512}, + {"mount: excessively long option argument\n", 1513}, + {"Warning: Unrecognized proto= option.\n", 1514}, + {"Warning: Option namlen is not supported.\n", 1515}, + {"unknown nfs mount parameter: %s=%d\n", 1516}, + {"Warning: option nolock is not supported.\n", 1517}, + {"unknown nfs mount option: %s%s\n", 1518}, + {"mount: got bad hp->h_length?\n", 1519}, + {"NFS over TCP is not supported.\n", 1520}, + {"nfs socket", 1521}, + {"nfs bindresvport", 1522}, + {"nfs server reported service unavailable", 1523}, + {"used portmapper to find NFS port\n", 1524}, + {"using port %d for nfs deamon\n", 1525}, + {"nfs connect", 1526}, + {"unknown nfs status return value: %d", 1527}, + {"bug in xstrndup call", 1528}, {"\ usage: %s [-hV]\n\ %s -a [-v]\n\ %s [-v] [-p priority] special ...\n\ - %s [-s]\n", 1522}, - {"%s on %s\n", 1523}, - {"swapon: cannot stat %s: %s\n", 1524}, - {"swapon: warning: %s has insecure permissions %04o, %04o suggested\n", 1525}, - {"swapon: Skipping file %s - it appears to have holes.\n", 1526}, - {"%s: cannot open %s: %s\n", 1527}, - {"umount: compiled without support for -f\n", 1528}, - {"host: %s, directory: %s\n", 1529}, - {"umount: can't get address for %s\n", 1530}, - {"umount: got bad hostp->h_length\n", 1531}, - {"umount: %s: invalid block device", 1532}, - {"umount: %s: not mounted", 1533}, - {"umount: %s: can't write superblock", 1534}, - {"umount: %s: device is busy", 1535}, - {"umount: %s: not found", 1536}, - {"umount: %s: must be superuser to umount", 1537}, - {"umount: %s: block devices not permitted on fs", 1538}, - {"umount: %s: %s", 1539}, - {"no umount2, trying umount...\n", 1540}, - {"could not umount %s - trying %s instead\n", 1541}, - {"umount: %s busy - remounted read-only\n", 1542}, - {"umount: could not remount %s read-only\n", 1543}, - {"%s umounted\n", 1544}, - {"umount: cannot find list of filesystems to unmount", 1545}, + %s [-s]\n", 1529}, + {"%s on %s\n", 1530}, + {"swapon: cannot stat %s: %s\n", 1531}, + {"swapon: warning: %s has insecure permissions %04o, %04o suggested\n", 1532}, + {"swapon: Skipping file %s - it appears to have holes.\n", 1533}, + {"%s: cannot open %s: %s\n", 1534}, + {"umount: compiled without support for -f\n", 1535}, + {"host: %s, directory: %s\n", 1536}, + {"umount: can't get address for %s\n", 1537}, + {"umount: got bad hostp->h_length\n", 1538}, + {"umount: %s: invalid block device", 1539}, + {"umount: %s: not mounted", 1540}, + {"umount: %s: can't write superblock", 1541}, + {"umount: %s: device is busy", 1542}, + {"umount: %s: not found", 1543}, + {"umount: %s: must be superuser to umount", 1544}, + {"umount: %s: block devices not permitted on fs", 1545}, + {"umount: %s: %s", 1546}, + {"no umount2, trying umount...\n", 1547}, + {"could not umount %s - trying %s instead\n", 1548}, + {"umount: %s busy - remounted read-only\n", 1549}, + {"umount: could not remount %s read-only\n", 1550}, + {"%s umounted\n", 1551}, + {"umount: cannot find list of filesystems to unmount", 1552}, {"\ Usage: umount [-hV]\n\ umount -a [-f] [-r] [-n] [-v] [-t vfstypes]\n\ - umount [-f] [-r] [-n] [-v] special | node...\n", 1546}, - {"Trying to umount %s\n", 1547}, - {"Could not find %s in mtab\n", 1548}, - {"umount: %s is not mounted (according to mtab)", 1549}, - {"umount: it seems %s is mounted multiple times", 1550}, - {"umount: %s is not in the fstab (and you are not root)", 1551}, - {"umount: %s mount disagrees with the fstab", 1552}, - {"umount: only root can unmount %s from %s", 1553}, - {"umount: only %s can unmount %s from %s", 1554}, - {"umount: only root can do that", 1555}, - {"You must be root to set the Ctrl-Alt-Del behaviour.\n", 1556}, - {"Usage: ctrlaltdel hard|soft\n", 1557}, + umount [-f] [-r] [-n] [-v] special | node...\n", 1553}, + {"Trying to umount %s\n", 1554}, + {"Could not find %s in mtab\n", 1555}, + {"umount: %s is not mounted (according to mtab)", 1556}, + {"umount: it seems %s is mounted multiple times", 1557}, + {"umount: %s is not in the fstab (and you are not root)", 1558}, + {"umount: %s mount disagrees with the fstab", 1559}, + {"umount: only root can unmount %s from %s", 1560}, + {"umount: only %s can unmount %s from %s", 1561}, + {"umount: only root can do that", 1562}, + {"You must be root to set the Ctrl-Alt-Del behaviour.\n", 1563}, + {"Usage: ctrlaltdel hard|soft\n", 1564}, {"\ File %s, For threshold value %lu, Maximum characters in fifo were %d,\n\ -and the maximum transfer rate in characters/second was %f\n", 1558}, +and the maximum transfer rate in characters/second was %f\n", 1565}, {"\ File %s, For threshold value %lu and timrout value %lu, Maximum characters \ in fifo were %d,\n\ -and the maximum transfer rate in characters/second was %f\n", 1559}, - {"Invalid interval value: %s\n", 1560}, - {"Invalid set value: %s\n", 1561}, - {"Invalid default value: %s\n", 1562}, - {"Invalid set time value: %s\n", 1563}, - {"Invalid default time value: %s\n", 1564}, +and the maximum transfer rate in characters/second was %f\n", 1566}, + {"Invalid interval value: %s\n", 1567}, + {"Invalid set value: %s\n", 1568}, + {"Invalid default value: %s\n", 1569}, + {"Invalid set time value: %s\n", 1570}, + {"Invalid default time value: %s\n", 1571}, {"\ Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) \ -[-g|-G] file [file...]\n", 1565}, - {"Can't open %s: %s\n", 1566}, - {"Can't set %s to threshold %d: %s\n", 1567}, - {"Can't set %s to time threshold %d: %s\n", 1568}, - {"Can't get threshold for %s: %s\n", 1569}, - {"Can't get timeout for %s: %s\n", 1570}, - {"%s: %ld %s threshold and %ld %s timeout\n", 1571}, - {"current", 1572}, - {"default", 1573}, - {"Can't set signal handler", 1574}, - {"gettimeofday failed", 1575}, - {"Can't issue CYGETMON on %s: %s\n", 1576}, - {"%s: %lu ints, %lu/%lu chars; ", 1577}, - {"fifo: %lu thresh, %lu tmout, ", 1578}, - {"%lu max, %lu now\n", 1579}, - {" %f int/sec; %f rec, %f send (char/sec)\n", 1580}, - {"\ -%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1581}, - {" %f int/sec; %f rec (char/sec)\n", 1582}, - {"Usage: %s [-c] [-n level] [-s bufsize]\n", 1583}, - {"invalid id: %s\n", 1584}, - {"cannot remove id %s (%s)\n", 1585}, - {"usage: %s {shm | msg | sem} id ...\n", 1586}, - {"unknown resource type: %s\n", 1587}, - {"resource(s) deleted\n", 1588}, - {"usage : %s -asmq -tclup \n", 1589}, - {"\t%s [-s -m -q] -i id\n", 1590}, - {"\t%s -h for help.\n", 1591}, - {"%s provides information on ipc facilities for", 1592}, - {" which you have read access.\n", 1593}, +[-g|-G] file [file...]\n", 1572}, + {"Can't open %s: %s\n", 1573}, + {"Can't set %s to threshold %d: %s\n", 1574}, + {"Can't set %s to time threshold %d: %s\n", 1575}, + {"Can't get threshold for %s: %s\n", 1576}, + {"Can't get timeout for %s: %s\n", 1577}, + {"%s: %ld current threshold and %ld current timeout\n", 1578}, + {"%s: %ld default threshold and %ld default timeout\n", 1579}, + {"Can't set signal handler", 1580}, + {"gettimeofday failed", 1581}, + {"Can't issue CYGETMON on %s: %s\n", 1582}, + {"\ +%s: %lu ints, %lu/%lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1583}, + {" %f int/sec; %f rec, %f send (char/sec)\n", 1584}, + {"\ +%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1585}, + {" %f int/sec; %f rec (char/sec)\n", 1586}, + {"Usage: %s [-c] [-n level] [-s bufsize]\n", 1587}, + {"invalid id: %s\n", 1588}, + {"cannot remove id %s (%s)\n", 1589}, + {"usage: %s {shm | msg | sem} id ...\n", 1590}, + {"unknown resource type: %s\n", 1591}, + {"resource(s) deleted\n", 1592}, + {"usage : %s -asmq -tclup \n", 1593}, + {"\t%s [-s -m -q] -i id\n", 1594}, + {"\t%s -h for help.\n", 1595}, + {"\ +%s provides information on ipc facilities for which you have read access.\n", 1596}, {"\ Resource Specification:\n\ \t-m : shared_mem\n\ -\t-q : messages\n", 1594}, +\t-q : messages\n", 1597}, {"\ \t-s : semaphores\n\ -\t-a : all (default)\n", 1595}, +\t-a : all (default)\n", 1598}, {"\ Output Format:\n\ \t-t : time\n\ \t-p : pid\n\ -\t-c : creator\n", 1596}, +\t-c : creator\n", 1599}, {"\ \t-l : limits\n\ -\t-u : summary\n", 1597}, - {"-i id [-s -q -m] : details on resource identified by id\n", 1598}, - {"kernel not configured for shared memory\n", 1599}, - {"------ Shared Memory Limits --------\n", 1600}, - {"max number of segments = %ld\n", 1601}, - {"max seg size (kbytes) = %ld\n", 1602}, - {"max total shared memory (kbytes) = %ld\n", 1603}, - {"min seg size (bytes) = %ld\n", 1604}, - {"------ Shared Memory Status --------\n", 1605}, - {"segments allocated %d\n", 1606}, - {"pages allocated %ld\n", 1607}, - {"pages resident %ld\n", 1608}, - {"pages swapped %ld\n", 1609}, - {"Swap performance: %ld attempts\t %ld successes\n", 1610}, - {"------ Shared Memory Segment Creators/Owners --------\n", 1611}, - {"%-10s %-10s %-10s %-10s %-10s %-10s\n", 1612}, - {"shmid", 1613}, - {"perms", 1614}, - {"cuid", 1615}, - {"cgid", 1616}, - {"uid", 1617}, - {"gid", 1618}, - {"------ Shared Memory Attach/Detach/Change Times --------\n", 1619}, - {"%-10s %-10s %-20s %-20s %-20s\n", 1620}, - {"owner", 1621}, - {"attached", 1622}, - {"detached", 1623}, - {"changed", 1624}, - {"------ Shared Memory Creator/Last-op --------\n", 1625}, - {"%-10s %-10s %-10s %-10s\n", 1626}, - {"cpid", 1627}, - {"lpid", 1628}, - {"------ Shared Memory Segments --------\n", 1629}, - {"%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n", 1630}, - {"key", 1631}, - {"bytes", 1632}, - {"nattch", 1633}, - {"status", 1634}, - {"Not set", 1635}, - {"dest", 1636}, - {"locked", 1637}, - {"kernel not configured for semaphores\n", 1638}, - {"------ Semaphore Limits --------\n", 1639}, - {"max number of arrays = %d\n", 1640}, - {"max semaphores per array = %d\n", 1641}, - {"max semaphores system wide = %d\n", 1642}, - {"max ops per semop call = %d\n", 1643}, - {"semaphore max value = %d\n", 1644}, - {"------ Semaphore Status --------\n", 1645}, - {"used arrays = %d\n", 1646}, - {"allocated semaphores = %d\n", 1647}, - {"------ Semaphore Arrays Creators/Owners --------\n", 1648}, - {"semid", 1649}, - {"------ Shared Memory Operation/Change Times --------\n", 1650}, - {"%-8s %-10s %-26.24s %-26.24s\n", 1651}, - {"last-op", 1652}, - {"last-changed", 1653}, - {"------ Semaphore Arrays --------\n", 1654}, - {"%-10s %-10s %-10s %-10s %-10s %-12s\n", 1655}, - {"nsems", 1656}, - {"kernel not configured for message queues\n", 1657}, - {"------ Messages: Limits --------\n", 1658}, - {"max queues system wide = %d\n", 1659}, - {"max size of message (bytes) = %d\n", 1660}, - {"default max size of queue (bytes) = %d\n", 1661}, - {"------ Messages: Status --------\n", 1662}, - {"allocated queues = %d\n", 1663}, - {"used headers = %d\n", 1664}, - {"used space = %d bytes\n", 1665}, - {"------ Message Queues: Creators/Owners --------\n", 1666}, - {"msqid", 1667}, - {"------ Message Queues Send/Recv/Change Times --------\n", 1668}, - {"%-8s %-10s %-20s %-20s %-20s\n", 1669}, - {"send", 1670}, - {"recv", 1671}, - {"change", 1672}, - {"------ Message Queues PIDs --------\n", 1673}, - {"lspid", 1674}, - {"lrpid", 1675}, - {"------ Message Queues --------\n", 1676}, - {"%-10s %-10s %-10s %-10s %-12s %-12s\n", 1677}, - {"used-bytes", 1678}, - {"messages", 1679}, +\t-u : summary\n", 1600}, + {"-i id [-s -q -m] : details on resource identified by id\n", 1601}, + {"kernel not configured for shared memory\n", 1602}, + {"------ Shared Memory Limits --------\n", 1603}, + {"max number of segments = %ld\n", 1604}, + {"max seg size (kbytes) = %ld\n", 1605}, + {"max total shared memory (kbytes) = %ld\n", 1606}, + {"min seg size (bytes) = %ld\n", 1607}, + {"------ Shared Memory Status --------\n", 1608}, + {"segments allocated %d\n", 1609}, + {"pages allocated %ld\n", 1610}, + {"pages resident %ld\n", 1611}, + {"pages swapped %ld\n", 1612}, + {"Swap performance: %ld attempts\t %ld successes\n", 1613}, + {"------ Shared Memory Segment Creators/Owners --------\n", 1614}, + {"%-10s %-10s %-10s %-10s %-10s %-10s\n", 1615}, + {"shmid", 1616}, + {"perms", 1617}, + {"cuid", 1618}, + {"cgid", 1619}, + {"uid", 1620}, + {"gid", 1621}, + {"------ Shared Memory Attach/Detach/Change Times --------\n", 1622}, + {"%-10s %-10s %-20s %-20s %-20s\n", 1623}, + {"owner", 1624}, + {"attached", 1625}, + {"detached", 1626}, + {"changed", 1627}, + {"------ Shared Memory Creator/Last-op --------\n", 1628}, + {"%-10s %-10s %-10s %-10s\n", 1629}, + {"cpid", 1630}, + {"lpid", 1631}, + {"------ Shared Memory Segments --------\n", 1632}, + {"%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n", 1633}, + {"key", 1634}, + {"bytes", 1635}, + {"nattch", 1636}, + {"status", 1637}, + {"Not set", 1638}, + {"dest", 1639}, + {"locked", 1640}, + {"kernel not configured for semaphores\n", 1641}, + {"------ Semaphore Limits --------\n", 1642}, + {"max number of arrays = %d\n", 1643}, + {"max semaphores per array = %d\n", 1644}, + {"max semaphores system wide = %d\n", 1645}, + {"max ops per semop call = %d\n", 1646}, + {"semaphore max value = %d\n", 1647}, + {"------ Semaphore Status --------\n", 1648}, + {"used arrays = %d\n", 1649}, + {"allocated semaphores = %d\n", 1650}, + {"------ Semaphore Arrays Creators/Owners --------\n", 1651}, + {"semid", 1652}, + {"------ Shared Memory Operation/Change Times --------\n", 1653}, + {"%-8s %-10s %-26.24s %-26.24s\n", 1654}, + {"last-op", 1655}, + {"last-changed", 1656}, + {"------ Semaphore Arrays --------\n", 1657}, + {"%-10s %-10s %-10s %-10s %-10s %-12s\n", 1658}, + {"nsems", 1659}, + {"kernel not configured for message queues\n", 1660}, + {"------ Messages: Limits --------\n", 1661}, + {"max queues system wide = %d\n", 1662}, + {"max size of message (bytes) = %d\n", 1663}, + {"default max size of queue (bytes) = %d\n", 1664}, + {"------ Messages: Status --------\n", 1665}, + {"allocated queues = %d\n", 1666}, + {"used headers = %d\n", 1667}, + {"used space = %d bytes\n", 1668}, + {"------ Message Queues: Creators/Owners --------\n", 1669}, + {"msqid", 1670}, + {"------ Message Queues Send/Recv/Change Times --------\n", 1671}, + {"%-8s %-10s %-20s %-20s %-20s\n", 1672}, + {"send", 1673}, + {"recv", 1674}, + {"change", 1675}, + {"------ Message Queues PIDs --------\n", 1676}, + {"lspid", 1677}, + {"lrpid", 1678}, + {"------ Message Queues --------\n", 1679}, + {"%-10s %-10s %-10s %-10s %-12s %-12s\n", 1680}, + {"used-bytes", 1681}, + {"messages", 1682}, {"\ \n\ -Shared memory Segment shmid=%d\n", 1680}, - {"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n", 1681}, - {"mode=%#o\taccess_perms=%#o\n", 1682}, - {"bytes=%d\tlpid=%d\tcpid=%d\tnattch=%ld\n", 1683}, - {"att_time=%-26.24s\n", 1684}, - {"det_time=%-26.24s\n", 1685}, - {"change_time=%-26.24s\n", 1686}, +Shared memory Segment shmid=%d\n", 1683}, + {"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n", 1684}, + {"mode=%#o\taccess_perms=%#o\n", 1685}, + {"bytes=%d\tlpid=%d\tcpid=%d\tnattch=%ld\n", 1686}, + {"att_time=%-26.24s\n", 1687}, + {"det_time=%-26.24s\n", 1688}, + {"change_time=%-26.24s\n", 1689}, {"\ \n\ -Message Queue msqid=%d\n", 1687}, - {"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n", 1688}, - {"cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n", 1689}, - {"send_time=%-26.24s\n", 1690}, - {"rcv_time=%-26.24s\n", 1691}, +Message Queue msqid=%d\n", 1690}, + {"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n", 1691}, + {"cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n", 1692}, + {"send_time=%-26.24s\n", 1693}, + {"rcv_time=%-26.24s\n", 1694}, {"\ \n\ -Semaphore Array semid=%d\n", 1692}, - {"uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n", 1693}, - {"mode=%#o, access_perms=%#o\n", 1694}, - {"nsems = %ld\n", 1695}, - {"otime = %-26.24s\n", 1696}, - {"ctime = %-26.24s\n", 1697}, - {"%-10s %-10s %-10s %-10s %-10s\n", 1698}, - {"semnum", 1699}, - {"value", 1700}, - {"ncount", 1701}, - {"zcount", 1702}, - {"pid", 1703}, - {"usage: rdev [ -rv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]", 1704}, - {"\ - rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device", 1705}, - {" rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2", 1706}, - {" rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)", 1707}, - {" rdev -r /dev/fd0 627 set the RAMDISK size", 1708}, - {" rdev -v /dev/fd0 1 set the bootup VIDEOMODE", 1709}, - {" rdev -o N ... use the byte offset N", 1710}, - {" rootflags ... same as rdev -R", 1711}, - {" ramsize ... same as rdev -r", 1712}, - {" vidmode ... same as rdev -v", 1713}, - {"\ -Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...", 1714}, - {" use -R 1 to mount root readonly, -R 0 for read/write.", 1715}, - {"missing comma", 1716}, +Semaphore Array semid=%d\n", 1695}, + {"uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n", 1696}, + {"mode=%#o, access_perms=%#o\n", 1697}, + {"nsems = %ld\n", 1698}, + {"otime = %-26.24s\n", 1699}, + {"ctime = %-26.24s\n", 1700}, + {"%-10s %-10s %-10s %-10s %-10s\n", 1701}, + {"semnum", 1702}, + {"value", 1703}, + {"ncount", 1704}, + {"zcount", 1705}, + {"pid", 1706}, + {"usage: rdev [ -rv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]", 1707}, + {"\ + rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device", 1708}, + {" rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2", 1709}, + {" rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)", 1710}, + {" rdev -r /dev/fd0 627 set the RAMDISK size", 1711}, + {" rdev -v /dev/fd0 1 set the bootup VIDEOMODE", 1712}, + {" rdev -o N ... use the byte offset N", 1713}, + {" rootflags ... same as rdev -R", 1714}, + {" ramsize ... same as rdev -r", 1715}, + {" vidmode ... same as rdev -v", 1716}, + {"\ +Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...", 1717}, + {" use -R 1 to mount root readonly, -R 0 for read/write.", 1718}, + {"missing comma", 1719}, {"\ %s: Usage: \"%s [options]\n\ \t -m (default = \"%s\")\n\ @@ -2224,107 +2240,108 @@ Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...", 1 \t -v print verbose data\n\ \t -a print all symbols, even if count is 0\n\ \t -r reset all the counters (root only)\n\ -\t -V print version and exit\n", 1717}, - {"%s Version %s\n", 1718}, - {"Sampling_step: %i\n", 1719}, - {"%s: %s(%i): wrong map line\n", 1720}, - {"%s: can't find \"_stext\" in %s\n", 1721}, - {"%s: profile address out of range. Wrong map file?\n", 1722}, - {"total", 1723}, - {"\ -usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n", 1724}, - {"renice: %s: unknown user\n", 1725}, - {"renice: %s: bad value\n", 1726}, - {"getpriority", 1727}, - {"setpriority", 1728}, - {"%d: old priority %d, new priority %d\n", 1729}, - {"usage: %s program [arg ...]\n", 1730}, +\t -V print version and exit\n", 1720}, + {"out of memory", 1721}, + {"%s Version %s\n", 1722}, + {"Sampling_step: %i\n", 1723}, + {"%s: %s(%i): wrong map line\n", 1724}, + {"%s: can't find \"_stext\" in %s\n", 1725}, + {"%s: profile address out of range. Wrong map file?\n", 1726}, + {"total", 1727}, + {"\ +usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n", 1728}, + {"renice: %s: unknown user\n", 1729}, + {"renice: %s: bad value\n", 1730}, + {"getpriority", 1731}, + {"setpriority", 1732}, + {"%d: old priority %d, new priority %d\n", 1733}, + {"usage: %s program [arg ...]\n", 1734}, {"\ Usage: %s [ -i | -t