Imported from util-linux-2.12pre tarball.
This commit is contained in:
parent
df1dddf9ff
commit
a21409f54e
8
HISTORY
8
HISTORY
|
@ -1,11 +1,3 @@
|
|||
util-linux 2.12
|
||||
|
||||
* losetup: -p option specifies fd for passphrase
|
||||
* fdisk: sgi layout fix
|
||||
* mount: -p option specifies fd for passphrase
|
||||
* mount: recognize some PCDOS floppies
|
||||
* umount: in "umount name", first try to interpret "name" as a mount point
|
||||
|
||||
util-linux 2.12pre
|
||||
|
||||
* Catalan messages (Antoni Bella Perez)
|
||||
|
|
|
@ -190,10 +190,12 @@ check_sgi_label() {
|
|||
|
||||
void
|
||||
sgi_list_table(int xtra) {
|
||||
int i, w, wd;
|
||||
int i, w;
|
||||
int kpi = 0; /* kernel partition ID */
|
||||
char *type;
|
||||
|
||||
w = strlen(disk_device);
|
||||
|
||||
if (xtra) {
|
||||
printf(_("\nDisk %s (SGI disk label): %d heads, %d sectors\n"
|
||||
"%d cylinders, %d physical cylinders\n"
|
||||
|
@ -213,15 +215,9 @@ sgi_list_table(int xtra) {
|
|||
disk_device, heads, sectors, cylinders,
|
||||
str_units(PLURAL), units_per_sector);
|
||||
}
|
||||
|
||||
w = strlen(disk_device);
|
||||
wd = strlen(_("Device"));
|
||||
if (w < wd)
|
||||
w = wd;
|
||||
|
||||
printf(_("----- partitions -----\n"
|
||||
"Pt# %*s Info Start End Sectors Id System\n"),
|
||||
w + 2, _("Device"));
|
||||
w + 1, _("Device"));
|
||||
for (i = 0 ; i < partitions; i++) {
|
||||
if (sgi_get_num_sectors(i) || debug) {
|
||||
__u32 start = sgi_get_start_sector(i);
|
||||
|
@ -230,7 +226,7 @@ sgi_list_table(int xtra) {
|
|||
printf(
|
||||
"%2d: %s %4s %9ld %9ld %9ld %2x %s\n",
|
||||
/* fdisk part number */ i+1,
|
||||
/* device */ partname(disk_device, kpi, w+3),
|
||||
/* device */ partname(disk_device, kpi, w+2),
|
||||
/* flags */ (sgi_get_swappartition() == i) ? "swap" :
|
||||
/* flags */ (sgi_get_bootpartition() == i) ? "boot" : " ",
|
||||
/* start */ (long) scround(start),
|
||||
|
|
|
@ -72,7 +72,7 @@ mount.o: $(LIB)/setproctitle.h
|
|||
|
||||
mount.o umount.o getusername.o: getusername.h
|
||||
|
||||
mount.o umount.o losetup.o lomount.o: lomount.h loop.h my_dev_t.h
|
||||
mount.o umount.o losetup.o lomount.o: lomount.h loop.h
|
||||
|
||||
swapon.o: swap_constants.h swapargs.h
|
||||
|
||||
|
@ -118,9 +118,12 @@ nfsmount.o: nfs_mount4.h
|
|||
swapargs.h:
|
||||
sh swap.configure
|
||||
|
||||
loop.h:
|
||||
sh mk_loop_h
|
||||
|
||||
clean:
|
||||
rm -f a.out core *~ *.o swapargs.h $(PROGS) $(MAYBE)
|
||||
rm -f nfs_mountversion.h
|
||||
rm -f loop.h nfs_mountversion.h
|
||||
|
||||
clobber distclean realclean: clean
|
||||
rm -f $(GEN_FILES)
|
||||
|
|
|
@ -100,7 +100,7 @@ read_mntentchn(mntFILE *mfp, const char *fnam, struct mntentchn *mc0) {
|
|||
struct mntent *mnt;
|
||||
|
||||
while ((mnt = my_getmntent (mfp)) != NULL) {
|
||||
if (!streq(mnt->mnt_type, MNTTYPE_IGNORE)) {
|
||||
if (!streq (mnt->mnt_type, MNTTYPE_IGNORE)) {
|
||||
mc->nxt = (struct mntentchn *) xmalloc(sizeof(*mc));
|
||||
mc->nxt->prev = mc;
|
||||
mc = mc->nxt;
|
||||
|
@ -179,62 +179,30 @@ getmntfile (const char *name) {
|
|||
|
||||
mc0 = mtab_head();
|
||||
for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt)
|
||||
if (streq(mc->m.mnt_dir, name) ||
|
||||
streq(mc->m.mnt_fsname, name))
|
||||
if (streq (mc->m.mnt_dir, name) ||
|
||||
streq (mc->m.mnt_fsname, name))
|
||||
return mc;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Given the directory name NAME, and the place MCPREV we found it last time,
|
||||
* Given the name NAME, and the place MCPREV we found it last time,
|
||||
* try to find more occurrences.
|
||||
*/
|
||||
struct mntentchn *
|
||||
getmntdirbackward (const char *name, struct mntentchn *mcprev) {
|
||||
getmntfilesbackward (const char *name, struct mntentchn *mcprev) {
|
||||
struct mntentchn *mc, *mc0;
|
||||
|
||||
mc0 = mtab_head();
|
||||
if (!mcprev)
|
||||
mcprev = mc0;
|
||||
for (mc = mcprev->prev; mc && mc != mc0; mc = mc->prev)
|
||||
if (streq(mc->m.mnt_dir, name))
|
||||
if (streq (mc->m.mnt_dir, name) ||
|
||||
streq (mc->m.mnt_fsname, name))
|
||||
return mc;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Given the device name NAME, and the place MCPREV we found it last time,
|
||||
* try to find more occurrences.
|
||||
*/
|
||||
struct mntentchn *
|
||||
getmntdevbackward (const char *name, struct mntentchn *mcprev) {
|
||||
struct mntentchn *mc, *mc0;
|
||||
|
||||
mc0 = mtab_head();
|
||||
if (!mcprev)
|
||||
mcprev = mc0;
|
||||
for (mc = mcprev->prev; mc && mc != mc0; mc = mc->prev)
|
||||
if (streq(mc->m.mnt_fsname, name))
|
||||
return mc;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Given the name NAME, check that it occurs precisely once as dir or dev.
|
||||
*/
|
||||
int
|
||||
is_mounted_once(const char *name) {
|
||||
struct mntentchn *mc, *mc0;
|
||||
int ct = 0;
|
||||
|
||||
mc0 = mtab_head();
|
||||
for (mc = mc0->prev; mc && mc != mc0; mc = mc->prev)
|
||||
if (streq(mc->m.mnt_dir, name) ||
|
||||
streq(mc->m.mnt_fsname, name))
|
||||
ct++;
|
||||
return (ct == 1);
|
||||
}
|
||||
|
||||
/* Given the name FILE, try to find the option "loop=FILE" in mtab. */
|
||||
struct mntentchn *
|
||||
getmntoptfile (const char *file) {
|
||||
|
@ -285,29 +253,29 @@ getfsspecfile (const char *spec, const char *file) {
|
|||
|
||||
/* first attempt: names occur precisely as given */
|
||||
for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt)
|
||||
if (streq(mc->m.mnt_dir, file) &&
|
||||
streq(mc->m.mnt_fsname, spec))
|
||||
if (streq (mc->m.mnt_dir, file) &&
|
||||
streq (mc->m.mnt_fsname, spec))
|
||||
return mc;
|
||||
|
||||
/* second attempt: names found after symlink resolution */
|
||||
for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt)
|
||||
if ((streq(mc->m.mnt_dir, file) ||
|
||||
streq(canonicalize(mc->m.mnt_dir), file))
|
||||
&& (streq(mc->m.mnt_fsname, spec) ||
|
||||
streq(canonicalize(mc->m.mnt_fsname), spec)))
|
||||
if ((streq (mc->m.mnt_dir, file) ||
|
||||
streq (canonicalize(mc->m.mnt_dir), file))
|
||||
&& (streq (mc->m.mnt_fsname, spec) ||
|
||||
streq (canonicalize(mc->m.mnt_fsname), spec)))
|
||||
return mc;
|
||||
|
||||
/* third attempt: names found after LABEL= or UUID= resolution */
|
||||
for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt) {
|
||||
if (!strncmp (mc->m.mnt_fsname, "LABEL=", 6) &&
|
||||
(streq(mc->m.mnt_dir, file) ||
|
||||
streq(canonicalize(mc->m.mnt_dir), file))) {
|
||||
(streq (mc->m.mnt_dir, file) ||
|
||||
streq (canonicalize(mc->m.mnt_dir), file))) {
|
||||
if (has_label(spec, mc->m.mnt_fsname+6))
|
||||
return mc;
|
||||
}
|
||||
if (!strncmp (mc->m.mnt_fsname, "UUID=", 5) &&
|
||||
(streq(mc->m.mnt_dir, file) ||
|
||||
streq(canonicalize(mc->m.mnt_dir), file))) {
|
||||
(streq (mc->m.mnt_dir, file) ||
|
||||
streq (canonicalize(mc->m.mnt_dir), file))) {
|
||||
if (has_uuid(spec, mc->m.mnt_fsname+5))
|
||||
return mc;
|
||||
}
|
||||
|
@ -322,7 +290,7 @@ getfsfile (const char *file) {
|
|||
|
||||
mc0 = fstab_head();
|
||||
for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt)
|
||||
if (streq(mc->m.mnt_dir, file))
|
||||
if (streq (mc->m.mnt_dir, file))
|
||||
return mc;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -334,7 +302,7 @@ getfsspec (const char *spec) {
|
|||
|
||||
mc0 = fstab_head();
|
||||
for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt)
|
||||
if (streq(mc->m.mnt_fsname, spec))
|
||||
if (streq (mc->m.mnt_fsname, spec))
|
||||
return mc;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -563,7 +531,7 @@ update_mtab (const char *dir, struct mntent *instead) {
|
|||
|
||||
/* find last occurrence of dir */
|
||||
for (mc = mc0->prev; mc && mc != mc0; mc = mc->prev)
|
||||
if (streq(mc->m.mnt_dir, dir))
|
||||
if (streq (mc->m.mnt_dir, dir))
|
||||
break;
|
||||
if (mc && mc != mc0) {
|
||||
if (instead == NULL) {
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
int mtab_is_writable(void);
|
||||
int mtab_does_not_exist(void);
|
||||
int mtab_is_a_symlink(void);
|
||||
int is_mounted_once(const char *name);
|
||||
|
||||
struct mntentchn {
|
||||
struct mntentchn *nxt, *prev;
|
||||
|
@ -22,8 +21,7 @@ struct mntentchn {
|
|||
struct mntentchn *mtab_head (void);
|
||||
struct mntentchn *getmntfile (const char *name);
|
||||
struct mntentchn *getmntoptfile (const char *file);
|
||||
struct mntentchn *getmntdirbackward (const char *dir, struct mntentchn *mc);
|
||||
struct mntentchn *getmntdevbackward (const char *dev, struct mntentchn *mc);
|
||||
struct mntentchn *getmntfilesbackward (const char *file, struct mntentchn *mc);
|
||||
|
||||
struct mntentchn *fstab_head (void);
|
||||
struct mntentchn *getfsfile (const char *file);
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* include/linux/loop.h
|
||||
*
|
||||
* Written by Theodore Ts'o, 3/29/93.
|
||||
*
|
||||
* Copyright 1993 by Theodore Ts'o. Redistribution of this file is
|
||||
* permitted under the GNU Public License.
|
||||
*/
|
||||
|
||||
#define LO_NAME_SIZE 64
|
||||
#define LO_KEY_SIZE 32
|
||||
|
||||
struct loop_info {
|
||||
int lo_number; /* ioctl r/o */
|
||||
dev_t lo_device; /* ioctl r/o */
|
||||
unsigned long lo_inode; /* ioctl r/o */
|
||||
dev_t lo_rdevice; /* ioctl r/o */
|
||||
int lo_offset;
|
||||
int lo_encrypt_type;
|
||||
int lo_encrypt_key_size; /* ioctl w/o */
|
||||
int lo_flags; /* ioctl r/o */
|
||||
char lo_name[LO_NAME_SIZE];
|
||||
unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
|
||||
unsigned long lo_init[2];
|
||||
char reserved[4];
|
||||
};
|
||||
|
||||
#define LO_CRYPT_NONE 0
|
||||
#define LO_CRYPT_XOR 1
|
||||
#define LO_CRYPT_DES 2
|
||||
#define LO_CRYPT_IDEA 3
|
||||
#define MAX_LO_CRYPT 4
|
||||
|
||||
#define LOOP_SET_FD 0x4C00
|
||||
#define LOOP_CLR_FD 0x4C01
|
||||
#define LOOP_SET_STATUS 0x4C02
|
||||
#define LOOP_GET_STATUS 0x4C03
|
361
mount/lomount.c
361
mount/lomount.c
|
@ -2,18 +2,13 @@
|
|||
/* Added vfs mount options - aeb - 960223 */
|
||||
/* Removed lomount - aeb - 960224 */
|
||||
|
||||
/*
|
||||
* 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
|
||||
/* 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
|
||||
* - added Native Language Support
|
||||
* 1999-03-21 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
|
||||
* Sun Mar 21 1999 - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
|
||||
* - fixed strerr(errno) in gettext calls
|
||||
* 2000-09-24 Marc Mutz <Marc@Mutz.com>
|
||||
* - added -p option to pass passphrases via fd's to losetup/mount.
|
||||
* Used for encryption in non-interactive environments.
|
||||
* The idea behind xgetpass() is stolen from GnuPG, v.1.0.3.
|
||||
*/
|
||||
|
||||
#define LOOPMAJOR 7
|
||||
#define PROC_DEVICES "/proc/devices"
|
||||
|
||||
/*
|
||||
* losetup.c - setup and control loop devices
|
||||
|
@ -41,114 +36,93 @@ extern char *xstrdup (const char *s); /* not: #include "sundries.h" */
|
|||
extern void error (const char *fmt, ...); /* idem */
|
||||
|
||||
#ifdef LOOP_SET_FD
|
||||
struct crypt_type_struct {
|
||||
int id;
|
||||
char *name;
|
||||
} crypt_type_tbl[] = {
|
||||
{ LO_CRYPT_NONE, "no" },
|
||||
{ LO_CRYPT_NONE, "none" },
|
||||
{ LO_CRYPT_XOR, "xor" },
|
||||
{ LO_CRYPT_DES, "DES" },
|
||||
{ -1, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
loop_info64_to_old(const struct loop_info64 *info64, struct loop_info *info)
|
||||
{
|
||||
memset(info, 0, sizeof(*info));
|
||||
info->lo_number = info64->lo_number;
|
||||
info->lo_device = info64->lo_device;
|
||||
info->lo_inode = info64->lo_inode;
|
||||
info->lo_rdevice = info64->lo_rdevice;
|
||||
info->lo_offset = info64->lo_offset;
|
||||
info->lo_encrypt_type = info64->lo_encrypt_type;
|
||||
info->lo_encrypt_key_size = info64->lo_encrypt_key_size;
|
||||
info->lo_flags = info64->lo_flags;
|
||||
info->lo_init[0] = info64->lo_init[0];
|
||||
info->lo_init[1] = info64->lo_init[1];
|
||||
if (info->lo_encrypt_type == LO_CRYPT_CRYPTOAPI)
|
||||
memcpy(info->lo_name, info64->lo_crypt_name, LO_NAME_SIZE);
|
||||
else
|
||||
memcpy(info->lo_name, info64->lo_file_name, LO_NAME_SIZE);
|
||||
memcpy(info->lo_encrypt_key, info64->lo_encrypt_key, LO_KEY_SIZE);
|
||||
crypt_type (const char *name) {
|
||||
int i;
|
||||
|
||||
/* error in case values were truncated */
|
||||
if (info->lo_device != info64->lo_device ||
|
||||
info->lo_rdevice != info64->lo_rdevice ||
|
||||
info->lo_inode != info64->lo_inode ||
|
||||
info->lo_offset != info64->lo_offset)
|
||||
return -EOVERFLOW;
|
||||
|
||||
return 0;
|
||||
if (name) {
|
||||
for (i = 0; crypt_type_tbl[i].id != -1; i++)
|
||||
if (!strcasecmp (name, crypt_type_tbl[i].name))
|
||||
return crypt_type_tbl[i].id;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef MAIN
|
||||
static char *
|
||||
crypt_name (int id) {
|
||||
int i;
|
||||
|
||||
for (i = 0; crypt_type_tbl[i].id != -1; i++)
|
||||
if (id == crypt_type_tbl[i].id)
|
||||
return crypt_type_tbl[i].name;
|
||||
return "undefined";
|
||||
}
|
||||
|
||||
static int
|
||||
show_loop(char *device) {
|
||||
show_loop (char *device) {
|
||||
struct loop_info loopinfo;
|
||||
struct loop_info64 loopinfo64;
|
||||
int fd, errsv;
|
||||
int fd;
|
||||
|
||||
if ((fd = open(device, O_RDONLY)) < 0) {
|
||||
if ((fd = open (device, O_RDONLY)) < 0) {
|
||||
int errsv = errno;
|
||||
fprintf(stderr, _("loop: can't open device %s: %s\n"),
|
||||
device, strerror (errsv));
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (ioctl(fd, LOOP_GET_STATUS64, &loopinfo64) == 0) {
|
||||
|
||||
loopinfo64.lo_file_name[LO_NAME_SIZE-2] = '*';
|
||||
loopinfo64.lo_file_name[LO_NAME_SIZE-1] = 0;
|
||||
loopinfo64.lo_crypt_name[LO_NAME_SIZE-1] = 0;
|
||||
|
||||
printf("%s: [%04llx]:%llu (%s)",
|
||||
device, loopinfo64.lo_device, loopinfo64.lo_inode,
|
||||
loopinfo64.lo_file_name);
|
||||
|
||||
if (loopinfo64.lo_offset)
|
||||
printf(_(", offset %lld"), loopinfo64.lo_offset);
|
||||
|
||||
if (loopinfo64.lo_sizelimit)
|
||||
printf(_(", sizelimit %lld"), loopinfo64.lo_sizelimit);
|
||||
|
||||
if (loopinfo64.lo_encrypt_type ||
|
||||
loopinfo64.lo_crypt_name[0]) {
|
||||
char *e = loopinfo64.lo_crypt_name;
|
||||
|
||||
if (*e == 0 && loopinfo64.lo_encrypt_type == 1)
|
||||
e = "XOR";
|
||||
printf(_(", encryption %s (type %d)"),
|
||||
e, loopinfo64.lo_encrypt_type);
|
||||
}
|
||||
printf("\n");
|
||||
if (ioctl (fd, LOOP_GET_STATUS, &loopinfo) < 0) {
|
||||
int errsv = errno;
|
||||
fprintf(stderr, _("loop: can't get info on device %s: %s\n"),
|
||||
device, strerror (errsv));
|
||||
close (fd);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (ioctl(fd, LOOP_GET_STATUS, &loopinfo) == 0) {
|
||||
printf ("%s: [%04x]:%ld (%s)",
|
||||
device, loopinfo.lo_device, loopinfo.lo_inode,
|
||||
loopinfo.lo_name);
|
||||
|
||||
if (loopinfo.lo_offset)
|
||||
printf(_(", offset %d"), loopinfo.lo_offset);
|
||||
|
||||
if (loopinfo.lo_encrypt_type)
|
||||
printf(_(", encryption type %d\n"),
|
||||
loopinfo.lo_encrypt_type);
|
||||
|
||||
printf("\n");
|
||||
close (fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
errsv = errno;
|
||||
fprintf(stderr, _("loop: can't get info on device %s: %s\n"),
|
||||
device, strerror (errsv));
|
||||
printf (_("%s: [%04x]:%ld (%s) offset %d, %s encryption\n"),
|
||||
device, loopinfo.lo_device, loopinfo.lo_inode,
|
||||
loopinfo.lo_name, loopinfo.lo_offset,
|
||||
crypt_name (loopinfo.lo_encrypt_type));
|
||||
close (fd);
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
is_loop_device (const char *device) {
|
||||
struct stat statbuf;
|
||||
int loopmajor;
|
||||
#if 1
|
||||
loopmajor = 7;
|
||||
#else
|
||||
FILE *procdev;
|
||||
char line[100], *cp;
|
||||
|
||||
return (stat(device, &statbuf) == 0 &&
|
||||
loopmajor = 0;
|
||||
if ((procdev = fopen(PROC_DEVICES, "r")) != NULL) {
|
||||
while (fgets (line, sizeof(line), procdev)) {
|
||||
if ((cp = strstr (line, " loop\n")) != NULL) {
|
||||
*cp='\0';
|
||||
loopmajor=atoi(line);
|
||||
break;
|
||||
}
|
||||
}
|
||||
fclose(procdev);
|
||||
}
|
||||
#endif
|
||||
return (loopmajor && stat(device, &statbuf) == 0 &&
|
||||
S_ISBLK(statbuf.st_mode) &&
|
||||
major(statbuf.st_rdev) == LOOPMAJOR);
|
||||
major(statbuf.st_rdev) == loopmajor);
|
||||
}
|
||||
|
||||
#define SIZE(a) (sizeof(a)/sizeof(a[0]))
|
||||
|
@ -160,9 +134,10 @@ find_unused_loop_device (void) {
|
|||
So, we just try /dev/loop[0-7]. */
|
||||
char dev[20];
|
||||
char *loop_formats[] = { "/dev/loop%d", "/dev/loop/%d" };
|
||||
int i, j, fd, somedev = 0, someloop = 0;
|
||||
int i, j, fd, somedev = 0, someloop = 0, loop_known = 0;
|
||||
struct stat statbuf;
|
||||
struct loop_info loopinfo;
|
||||
FILE *procdev;
|
||||
|
||||
for (j = 0; j < SIZE(loop_formats); j++) {
|
||||
for(i = 0; i < 256; i++) {
|
||||
|
@ -185,103 +160,73 @@ find_unused_loop_device (void) {
|
|||
}
|
||||
}
|
||||
|
||||
/* Nothing found. Why not? */
|
||||
if ((procdev = fopen(PROC_DEVICES, "r")) != NULL) {
|
||||
char line[100];
|
||||
while (fgets (line, sizeof(line), procdev))
|
||||
if (strstr (line, " loop\n")) {
|
||||
loop_known = 1;
|
||||
break;
|
||||
}
|
||||
fclose(procdev);
|
||||
if (!loop_known)
|
||||
loop_known = -1;
|
||||
}
|
||||
|
||||
if (!somedev)
|
||||
error(_("mount: could not find any device /dev/loop#"));
|
||||
else if (!someloop) {
|
||||
if (loop_known == 1)
|
||||
error(_(
|
||||
"mount: Could not find any loop device. Maybe this kernel "
|
||||
"does not know\n"
|
||||
" about the loop device? (If so, recompile or "
|
||||
"`modprobe loop'.)"));
|
||||
"mount: Could not find any loop device.\n"
|
||||
" Maybe /dev/loop# has a wrong major number?"));
|
||||
else if (loop_known == -1)
|
||||
error(_(
|
||||
"mount: Could not find any loop device, and, according to %s,\n"
|
||||
" this kernel does not know about the loop device.\n"
|
||||
" (If so, then recompile or `insmod loop.o'.)"),
|
||||
PROC_DEVICES);
|
||||
else
|
||||
error(_(
|
||||
"mount: Could not find any loop device. Maybe this kernel does not know\n"
|
||||
" about the loop device (then recompile or `insmod loop.o'), or\n"
|
||||
" maybe /dev/loop# has the wrong major number?"));
|
||||
} else
|
||||
error(_("mount: could not find any free loop device"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* A function to read the passphrase either from the terminal or from
|
||||
* an open file descriptor.
|
||||
*/
|
||||
static char *
|
||||
xgetpass(int pfd, const char *prompt) {
|
||||
char *pass;
|
||||
int buflen, i;
|
||||
|
||||
if (pfd < 0) /* terminal */
|
||||
return getpass(prompt);
|
||||
|
||||
pass = NULL;
|
||||
buflen = 0;
|
||||
for (i=0; ; i++) {
|
||||
if (i >= buflen-1) {
|
||||
/* we're running out of space in the buffer.
|
||||
* Make it bigger: */
|
||||
char *tmppass = pass;
|
||||
buflen += 128;
|
||||
pass = realloc(tmppass, buflen);
|
||||
if (pass == NULL) {
|
||||
/* realloc failed. Stop reading. */
|
||||
error("Out of memory while reading passphrase");
|
||||
pass = tmppass; /* the old buffer hasn't changed */
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (read(pfd, pass+i, 1) != 1 || pass[i] == '\n')
|
||||
break;
|
||||
}
|
||||
if (pass == NULL)
|
||||
return "";
|
||||
else {
|
||||
pass[i] = 0;
|
||||
return pass;
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
digits_only(const char *s) {
|
||||
while (*s)
|
||||
if (!isdigit(*s++))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
set_loop(const char *device, const char *file, int offset,
|
||||
const char *encryption, int pfd, int *loopro) {
|
||||
struct loop_info64 loopinfo64;
|
||||
int fd, ffd, mode;
|
||||
set_loop (const char *device, const char *file, int offset,
|
||||
const char *encryption, int *loopro) {
|
||||
struct loop_info loopinfo;
|
||||
int fd, ffd, mode, i;
|
||||
char *pass;
|
||||
|
||||
mode = (*loopro ? O_RDONLY : O_RDWR);
|
||||
if ((ffd = open(file, mode)) < 0) {
|
||||
if ((ffd = open (file, mode)) < 0) {
|
||||
if (!*loopro && errno == EROFS)
|
||||
ffd = open(file, mode = O_RDONLY);
|
||||
ffd = open (file, mode = O_RDONLY);
|
||||
if (ffd < 0) {
|
||||
perror(file);
|
||||
perror (file);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if ((fd = open(device, mode)) < 0) {
|
||||
if ((fd = open (device, mode)) < 0) {
|
||||
perror (device);
|
||||
return 1;
|
||||
}
|
||||
*loopro = (mode == O_RDONLY);
|
||||
|
||||
memset(&loopinfo64, 0, sizeof(loopinfo64));
|
||||
|
||||
xstrncpy(loopinfo64.lo_file_name, file, LO_NAME_SIZE);
|
||||
|
||||
if (encryption && *encryption) {
|
||||
if (digits_only(encryption)) {
|
||||
loopinfo64.lo_encrypt_type = atoi(encryption);
|
||||
} else {
|
||||
loopinfo64.lo_encrypt_type = LO_CRYPT_CRYPTOAPI;
|
||||
snprintf(loopinfo64.lo_crypt_name, LO_NAME_SIZE,
|
||||
"%s", encryption);
|
||||
}
|
||||
memset (&loopinfo, 0, sizeof (loopinfo));
|
||||
xstrncpy (loopinfo.lo_name, file, LO_NAME_SIZE);
|
||||
if (encryption && (loopinfo.lo_encrypt_type = crypt_type (encryption))
|
||||
< 0) {
|
||||
fprintf (stderr, _("Unsupported encryption type %s\n"),
|
||||
encryption);
|
||||
return 1;
|
||||
}
|
||||
|
||||
loopinfo64.lo_offset = offset;
|
||||
loopinfo.lo_offset = offset;
|
||||
|
||||
#ifdef MCL_FUTURE
|
||||
/*
|
||||
|
@ -296,55 +241,53 @@ set_loop(const char *device, const char *file, int offset,
|
|||
}
|
||||
#endif
|
||||
|
||||
switch (loopinfo64.lo_encrypt_type) {
|
||||
switch (loopinfo.lo_encrypt_type) {
|
||||
case LO_CRYPT_NONE:
|
||||
loopinfo64.lo_encrypt_key_size = 0;
|
||||
loopinfo.lo_encrypt_key_size = 0;
|
||||
break;
|
||||
case LO_CRYPT_XOR:
|
||||
pass = getpass(_("Password: "));
|
||||
xstrncpy(loopinfo64.lo_encrypt_key, pass, LO_KEY_SIZE);
|
||||
loopinfo64.lo_encrypt_key_size =
|
||||
strlen(loopinfo64.lo_encrypt_key);
|
||||
pass = getpass (_("Password: "));
|
||||
xstrncpy (loopinfo.lo_encrypt_key, pass, LO_KEY_SIZE);
|
||||
loopinfo.lo_encrypt_key_size = strlen(loopinfo.lo_encrypt_key);
|
||||
break;
|
||||
case LO_CRYPT_DES:
|
||||
pass = getpass (_("Password: "));
|
||||
strncpy (loopinfo.lo_encrypt_key, pass, 8);
|
||||
loopinfo.lo_encrypt_key[8] = 0;
|
||||
loopinfo.lo_encrypt_key_size = 8;
|
||||
pass = getpass (_("Init (up to 16 hex digits): "));
|
||||
for (i = 0; i < 16 && pass[i]; i++)
|
||||
if (isxdigit (pass[i])) {
|
||||
loopinfo.lo_init[i >> 3] |= (pass[i] > '9' ?
|
||||
(islower (pass[i]) ? toupper (pass[i]) :
|
||||
pass[i])-'A'+10 : pass[i]-'0') << (i&7) * 4;
|
||||
} else {
|
||||
fprintf (stderr, _("Non-hex digit '%c'.\n"),
|
||||
pass[i]);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
pass = xgetpass(pfd, _("Password: "));
|
||||
xstrncpy(loopinfo64.lo_encrypt_key, pass, LO_KEY_SIZE);
|
||||
loopinfo64.lo_encrypt_key_size = LO_KEY_SIZE;
|
||||
}
|
||||
|
||||
if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
|
||||
perror("ioctl: LOOP_SET_FD");
|
||||
fprintf (stderr,
|
||||
_("Don't know how to get key for encryption system %d\n"),
|
||||
loopinfo.lo_encrypt_type);
|
||||
return 1;
|
||||
}
|
||||
close (ffd);
|
||||
|
||||
if (ioctl(fd, LOOP_SET_STATUS64, &loopinfo64) < 0) {
|
||||
struct loop_info loopinfo;
|
||||
int errsv = errno;
|
||||
|
||||
errno = loop_info64_to_old(&loopinfo64, &loopinfo);
|
||||
if (errno) {
|
||||
errno = errsv;
|
||||
perror("ioctl: LOOP_SET_STATUS64");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
|
||||
perror("ioctl: LOOP_SET_STATUS");
|
||||
goto fail;
|
||||
}
|
||||
if (ioctl (fd, LOOP_SET_FD, ffd) < 0) {
|
||||
perror ("ioctl: LOOP_SET_FD");
|
||||
return 1;
|
||||
}
|
||||
if (ioctl (fd, LOOP_SET_STATUS, &loopinfo) < 0) {
|
||||
(void) ioctl (fd, LOOP_CLR_FD, 0);
|
||||
perror ("ioctl: LOOP_SET_STATUS");
|
||||
return 1;
|
||||
}
|
||||
|
||||
close (fd);
|
||||
close (ffd);
|
||||
if (verbose > 1)
|
||||
printf(_("set_loop(%s,%s,%d): success\n"),
|
||||
device, file, offset);
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
(void) ioctl (fd, LOOP_CLR_FD, 0);
|
||||
close (fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -445,34 +388,29 @@ error (const char *fmt, ...) {
|
|||
|
||||
int
|
||||
main(int argc, char **argv) {
|
||||
char *offset, *encryption, *passfd;
|
||||
int delete, off, c;
|
||||
char *offset, *encryption;
|
||||
int delete,off,c;
|
||||
int res = 0;
|
||||
int ro = 0;
|
||||
int pfd = -1;
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||
textdomain(PACKAGE);
|
||||
|
||||
delete = off = 0;
|
||||
offset = encryption = passfd = NULL;
|
||||
offset = encryption = NULL;
|
||||
progname = argv[0];
|
||||
while ((c = getopt(argc,argv,"de:E:o:p:v")) != -1) {
|
||||
while ((c = getopt(argc,argv,"de:o:v")) != -1) {
|
||||
switch (c) {
|
||||
case 'd':
|
||||
delete = 1;
|
||||
break;
|
||||
case 'E':
|
||||
case 'e':
|
||||
encryption = optarg;
|
||||
break;
|
||||
case 'o':
|
||||
offset = optarg;
|
||||
break;
|
||||
case 'p':
|
||||
passfd = optarg;
|
||||
break;
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
break;
|
||||
|
@ -492,10 +430,7 @@ main(int argc, char **argv) {
|
|||
} else {
|
||||
if (offset && sscanf(offset,"%d",&off) != 1)
|
||||
usage();
|
||||
if (passfd && sscanf(passfd,"%d",&pfd) != 1)
|
||||
usage();
|
||||
res = set_loop(argv[optind], argv[optind+1], off,
|
||||
encryption, pfd, &ro);
|
||||
res = set_loop(argv[optind],argv[optind+1],off,encryption,&ro);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
extern int verbose;
|
||||
extern int set_loop(const char *, const char *, int, const char *,
|
||||
int, int *);
|
||||
extern int del_loop(const char *);
|
||||
extern int is_loop_device(const char *);
|
||||
extern char * find_unused_loop_device(void);
|
||||
extern int set_loop (const char *, const char *, int, const char *, int *);
|
||||
extern int del_loop (const char *);
|
||||
extern int is_loop_device (const char *);
|
||||
extern char * find_unused_loop_device (void);
|
||||
|
|
51
mount/loop.h
51
mount/loop.h
|
@ -1,51 +0,0 @@
|
|||
#define LO_CRYPT_NONE 0
|
||||
#define LO_CRYPT_XOR 1
|
||||
#define LO_CRYPT_DES 2
|
||||
#define LO_CRYPT_CRYPTOAPI 18
|
||||
|
||||
#define LOOP_SET_FD 0x4C00
|
||||
#define LOOP_CLR_FD 0x4C01
|
||||
#define LOOP_SET_STATUS 0x4C02
|
||||
#define LOOP_GET_STATUS 0x4C03
|
||||
#define LOOP_SET_STATUS64 0x4C04
|
||||
#define LOOP_GET_STATUS64 0x4C05
|
||||
|
||||
#define LO_NAME_SIZE 64
|
||||
#define LO_KEY_SIZE 32
|
||||
|
||||
#include "my_dev_t.h"
|
||||
|
||||
struct loop_info {
|
||||
int lo_number;
|
||||
my_dev_t lo_device;
|
||||
unsigned long lo_inode;
|
||||
my_dev_t lo_rdevice;
|
||||
int lo_offset;
|
||||
int lo_encrypt_type;
|
||||
int lo_encrypt_key_size;
|
||||
int lo_flags;
|
||||
char lo_name[LO_NAME_SIZE];
|
||||
unsigned char lo_encrypt_key[LO_KEY_SIZE];
|
||||
unsigned long lo_init[2];
|
||||
char reserved[4];
|
||||
};
|
||||
|
||||
/*
|
||||
* Where to get __u8, __u32, __u64? Let us use unsigned char/int/long long
|
||||
* and get punished when someone comes with 128-bit long longs.
|
||||
*/
|
||||
struct loop_info64 {
|
||||
unsigned long long lo_device;
|
||||
unsigned long long lo_inode;
|
||||
unsigned long long lo_rdevice;
|
||||
unsigned long long lo_offset;
|
||||
unsigned long long lo_sizelimit; /* bytes, 0 == max available */
|
||||
unsigned int lo_number;
|
||||
unsigned int lo_encrypt_type;
|
||||
unsigned int lo_encrypt_key_size;
|
||||
unsigned int lo_flags;
|
||||
unsigned char lo_file_name[LO_NAME_SIZE];
|
||||
unsigned char lo_crypt_name[LO_NAME_SIZE];
|
||||
unsigned char lo_encrypt_key[LO_KEY_SIZE];
|
||||
unsigned long long lo_init[2];
|
||||
};
|
|
@ -1,18 +1,15 @@
|
|||
.TH LOSETUP 8 "2003-07-01" "Linux" "MAINTENANCE COMMANDS"
|
||||
.TH LOSETUP 8 "Nov 24 1993" "Linux" "MAINTENANCE COMMANDS"
|
||||
.SH NAME
|
||||
losetup \- set up and control loop devices
|
||||
.SH SYNOPSIS
|
||||
.ad l
|
||||
.B losetup
|
||||
[
|
||||
.RB [ \-e | \-E ]
|
||||
.B \-e
|
||||
.I encryption
|
||||
] [
|
||||
.B \-o
|
||||
.I offset
|
||||
] [
|
||||
.B \-p
|
||||
.I pfd
|
||||
]
|
||||
.I loop_device file
|
||||
.br
|
||||
|
@ -28,41 +25,27 @@ is used to associate loop devices with regular files or block devices,
|
|||
to detach loop devices and to query the status of a loop device. If only the
|
||||
\fIloop_device\fP argument is given, the status of the corresponding loop
|
||||
device is shown.
|
||||
|
||||
.SS "Encryption"
|
||||
It is possible to specify transfer functions (for encryption/decryption
|
||||
or other purposes) using one of the
|
||||
.B \-E
|
||||
and
|
||||
.B \-e
|
||||
options.
|
||||
There are two mechanisms to specify the desired encryption: by number
|
||||
and by name. If an encryption is specified by number then one
|
||||
has to make sure that the Linux kernel knows about the encryption with that
|
||||
number, probably by patching the kernel. Standard numbers that are
|
||||
always present are 0 (no encryption) and 1 (XOR encryption).
|
||||
When the cryptoloop module is loaded (or compiled in), it uses number 18.
|
||||
This cryptoloop module wil take the name of an arbitrary encryption type
|
||||
and finds the module that knows how to perform that encryption.
|
||||
(Thus, either one uses a number different from 18 with the
|
||||
.B \-E
|
||||
option, or one uses a name with the
|
||||
.B \-e
|
||||
option.)
|
||||
.SH OPTIONS
|
||||
.IP \fB\-d\fP
|
||||
Detach the file or device associated with the specified loop device.
|
||||
.IP "\fB\-E \fIencryption_type\fP"
|
||||
Enable data encryption with specified number.
|
||||
.IP "\fB\-e \fIencryption_name\fP"
|
||||
Enable data encryption with specified name.
|
||||
detach the file or device associated with the specified loop device.
|
||||
.IP "\fB\-e \fIencryption\fP"
|
||||
.RS
|
||||
enable data encryption. The following keywords are recognized:
|
||||
.IP \fBNONE\fP
|
||||
use no encryption (default).
|
||||
.PD 0
|
||||
.IP \fBXOR\fP
|
||||
use a simple XOR encryption.
|
||||
.IP \fBDES\fP
|
||||
use DES encryption. DES encryption is only available if the optional
|
||||
DES package has been added to the kernel. DES encryption uses an additional
|
||||
start value that is used to protect passwords against dictionary
|
||||
attacks.
|
||||
.PD
|
||||
.RE
|
||||
.IP "\fB\-o \fIoffset\fP"
|
||||
The data start is moved \fIoffset\fP bytes into the specified file or
|
||||
the data start is moved \fIoffset\fP bytes into the specified file or
|
||||
device.
|
||||
.IP "\fB\-p \fInum\fP"
|
||||
Read the passphrase from file descriptor with number
|
||||
.I num
|
||||
instead of from the terminal.
|
||||
.SH RETURN VALUE
|
||||
.B losetup
|
||||
returns 0 on success, nonzero on failure. When
|
||||
|
@ -74,7 +57,7 @@ from determining the status of the device.
|
|||
|
||||
.SH FILES
|
||||
.nf
|
||||
/dev/loop0, /dev/loop1, ... loop devices (major=7)
|
||||
/dev/loop0,/dev/loop1,... loop devices (major=7)
|
||||
.fi
|
||||
.SH EXAMPLE
|
||||
If you are using the loadable module you must have the module loaded
|
||||
|
@ -82,23 +65,18 @@ first with the command
|
|||
.IP
|
||||
# insmod loop.o
|
||||
.LP
|
||||
Maybe also encryption modules are needed.
|
||||
.IP
|
||||
# insmod des.o
|
||||
# insmod cryptoloop.o
|
||||
.LP
|
||||
The following commands can be used as an example of using the loop device.
|
||||
.nf
|
||||
.IP
|
||||
# dd if=/dev/zero of=/file bs=1k count=100
|
||||
# losetup -e des /dev/loop0 /file
|
||||
dd if=/dev/zero of=/file bs=1k count=100
|
||||
losetup -e des /dev/loop0 /file
|
||||
Password:
|
||||
Init (up to 16 hex digits):
|
||||
# mkfs -t ext2 /dev/loop0 100
|
||||
# mount -t ext2 /dev/loop0 /mnt
|
||||
mkfs -t ext2 /dev/loop0 100
|
||||
mount -t ext2 /dev/loop0 /mnt
|
||||
...
|
||||
# umount /dev/loop0
|
||||
# losetup -d /dev/loop0
|
||||
umount /dev/loop0
|
||||
losetup -d /dev/loop0
|
||||
.fi
|
||||
.LP
|
||||
If you are using the loadable module you may remove the module with
|
||||
|
@ -109,8 +87,8 @@ the command
|
|||
.fi
|
||||
.SH RESTRICTION
|
||||
DES encryption is painfully slow. On the other hand, XOR is terribly weak.
|
||||
.\" .SH AUTHORS
|
||||
.\" .nf
|
||||
.\" Original version: Theodore Ts'o <tytso@athena.mit.edu>
|
||||
.\" Original DES by: Eric Young <eay@psych.psy.uq.oz.au>
|
||||
.\" .fi
|
||||
.SH AUTHORS
|
||||
.nf
|
||||
Original version: Theodore Ts'o <tytso@athena.mit.edu>
|
||||
Original DES by: Eric Young <eay@psych.psy.uq.oz.au>
|
||||
.fi
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Figure out (i) the type of dev_t (ii) the defines for loop stuff
|
||||
#
|
||||
|
||||
rm -f loop.h
|
||||
|
||||
# Since 1.3.79 there is an include file <asm/posix_types.h>
|
||||
# that defines __kernel_dev_t.
|
||||
# (The file itself appeared in 1.3.78, but there it defined __dev_t.)
|
||||
# If it exists, we use it, or, rather, <linux/posix_types.h> which
|
||||
# avoids namespace pollution. Otherwise we guess that __kernel_dev_t
|
||||
# is an unsigned short (which is true on i386, but false on alpha).
|
||||
|
||||
if [ -f /usr/include/linux/posix_types.h ]; then
|
||||
echo '#include <linux/posix_types.h>' >> loop.h
|
||||
echo '#undef dev_t' >> loop.h
|
||||
echo '#define dev_t __kernel_dev_t' >> loop.h
|
||||
else
|
||||
echo '#undef dev_t' >> loop.h
|
||||
echo '#define dev_t unsigned short' >> loop.h
|
||||
fi
|
||||
|
||||
# Next we have to find the loop stuff itself.
|
||||
# First try kernel source, then a private version.
|
||||
|
||||
if [ -f /usr/include/linux/loop.h ]; then
|
||||
echo '#include <linux/loop.h>' >> loop.h
|
||||
else
|
||||
echo '#include "h/loop.h"' >> loop.h
|
||||
fi
|
||||
|
||||
echo '#undef dev_t' >> loop.h
|
||||
|
|
@ -315,12 +315,6 @@ This is necessary for example when
|
|||
.I /etc
|
||||
is on a read-only file system.
|
||||
.TP
|
||||
.BI \-p " num"
|
||||
In case of a loop mount with encryption, read the passphrase from
|
||||
file descriptor
|
||||
.I num
|
||||
instead of from the terminal.
|
||||
.TP
|
||||
.B \-s
|
||||
Tolerate sloppy mount options rather than failing. This will ignore
|
||||
mount options not supported by a filesystem type. Not all filesystems
|
||||
|
|
|
@ -113,9 +113,6 @@ static int mounttype = 0;
|
|||
/* True if ruid != euid. */
|
||||
static int suid = 0;
|
||||
|
||||
/* Contains the fd to read the passphrase from, if any. */
|
||||
static int pfd = -1;
|
||||
|
||||
/* Map from -o and fstab option strings to the flag argument to mount(2). */
|
||||
struct opt_map {
|
||||
const char *opt; /* option name */
|
||||
|
@ -604,8 +601,7 @@ loop_check(char **spec, char **type, int *flags,
|
|||
if (verbose)
|
||||
printf(_("mount: going to use the loop device %s\n"), *loopdev);
|
||||
offset = opt_offset ? strtoul(opt_offset, NULL, 0) : 0;
|
||||
if (set_loop(*loopdev, *loopfile, offset,
|
||||
opt_encryption, pfd, &loopro)) {
|
||||
if (set_loop (*loopdev, *loopfile, offset, opt_encryption, &loopro)) {
|
||||
if (verbose)
|
||||
printf(_("mount: failed setting up loop device\n"));
|
||||
return EX_FAIL;
|
||||
|
@ -663,14 +659,6 @@ update_mtab_entry(char *spec, char *node, char *type, char *opts,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
set_pfd(char *s) {
|
||||
if (!isdigit(*s))
|
||||
die(EX_USAGE,
|
||||
_("mount: argument to -p or --pass-fd must be a number"));
|
||||
pfd = atoi(optarg);
|
||||
}
|
||||
|
||||
static void
|
||||
cdrom_setspeed(char *spec) {
|
||||
#define CDROM_SELECT_SPEED 0x5322 /* Set the CD-ROM speed */
|
||||
|
@ -780,7 +768,7 @@ try_mount_one (const char *spec0, const char *node0, char *types0,
|
|||
if (mount_all && (flags & MS_NOAUTO))
|
||||
return 0;
|
||||
|
||||
suid_check(spec, node, &flags, &user);
|
||||
suid_check (spec, node, &flags, &user);
|
||||
|
||||
mount_opts = extra_opts;
|
||||
|
||||
|
@ -788,12 +776,11 @@ try_mount_one (const char *spec0, const char *node0, char *types0,
|
|||
cdrom_setspeed(spec);
|
||||
|
||||
if (!(flags & MS_REMOUNT)) {
|
||||
/*
|
||||
* Don't set up a (new) loop device if we only remount - this left
|
||||
/* don't set up a (new) loop device if we only remount - this left
|
||||
* stale assignments of files to loop devices. Nasty when used for
|
||||
* encryption.
|
||||
*/
|
||||
res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile);
|
||||
res = loop_check (&spec, &types, &flags, &loop, &loopdev, &loopfile);
|
||||
if (res)
|
||||
return res;
|
||||
}
|
||||
|
@ -1370,7 +1357,6 @@ static struct option longopts[] = {
|
|||
{ "rw", 0, 0, 'w' },
|
||||
{ "options", 1, 0, 'o' },
|
||||
{ "test-opts", 1, 0, 'O' },
|
||||
{ "pass-fd", 1, 0, 'p' },
|
||||
{ "types", 1, 0, 't' },
|
||||
{ "bind", 0, 0, 128 },
|
||||
{ "replace", 0, 0, 129 },
|
||||
|
@ -1408,7 +1394,7 @@ usage (FILE *fp, int n) {
|
|||
" mount --move olddir newdir\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] [-p passwdfd].\n"
|
||||
"Other options: [-nfFrsvw] [-o options].\n"
|
||||
"For many more details, say man 8 mount .\n"
|
||||
));
|
||||
/*
|
||||
|
@ -1447,7 +1433,7 @@ main (int argc, char *argv[]) {
|
|||
initproctitle(argc, argv);
|
||||
#endif
|
||||
|
||||
while ((c = getopt_long (argc, argv, "afFhilL:no:O:p:rsU:vVwt:",
|
||||
while ((c = getopt_long (argc, argv, "afFhilL:no:O:rsU:vVwt:",
|
||||
longopts, NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'a': /* mount everything in fstab */
|
||||
|
@ -1486,9 +1472,6 @@ main (int argc, char *argv[]) {
|
|||
else
|
||||
test_opts = xstrdup(optarg);
|
||||
break;
|
||||
case 'p': /* fd on which to read passwd */
|
||||
set_pfd(optarg);
|
||||
break;
|
||||
case 'r': /* mount readonly */
|
||||
readonly = 1;
|
||||
readwrite = 0;
|
||||
|
|
|
@ -297,8 +297,6 @@ do_guess_fstype(const char *device) {
|
|||
else if ((!strncmp(xsb.fatsb.s_os, "MSDOS", 5) ||
|
||||
!strncmp(xsb.fatsb.s_os, "MSWIN", 5) ||
|
||||
!strncmp(xsb.fatsb.s_os, "MTOOL", 5) ||
|
||||
!strncmp(xsb.fatsb.s_os, "IBM", 3) ||
|
||||
!strncmp(xsb.fatsb.s_os, "DRDOS", 5) ||
|
||||
!strncmp(xsb.fatsb.s_os, "mkdosfs", 7) ||
|
||||
!strncmp(xsb.fatsb.s_os, "kmkdosfs", 8) ||
|
||||
/* Michal Svec: created by fdformat, old msdos utility for
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
/* silliness to get dev_t defined as the kernel defines it */
|
||||
/* glibc uses a different dev_t */
|
||||
/* maybe we need __kernel_old_dev_t -- later */
|
||||
/* for ancient systems use "unsigned short" */
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
#define my_dev_t __kernel_dev_t
|
|
@ -400,23 +400,15 @@ umount_one (const char *spec, const char *node, const char *type,
|
|||
* In both cases, it is best to try the last occurrence first.
|
||||
*/
|
||||
static int
|
||||
umount_one_bw (const char *file, struct mntentchn *mc0) {
|
||||
struct mntentchn *mc;
|
||||
int res = 1;
|
||||
umount_one_bw (const char *file, struct mntentchn *mc) {
|
||||
int res = 1;
|
||||
|
||||
mc = mc0;
|
||||
while (res && mc) {
|
||||
res = umount_one(mc->m.mnt_fsname, mc->m.mnt_dir,
|
||||
mc->m.mnt_type, mc->m.mnt_opts, mc);
|
||||
mc = getmntdirbackward(file, mc);
|
||||
}
|
||||
mc = mc0;
|
||||
while (res && mc) {
|
||||
res = umount_one(mc->m.mnt_fsname, mc->m.mnt_dir,
|
||||
mc->m.mnt_type, mc->m.mnt_opts, mc);
|
||||
mc = getmntdevbackward(file, mc);
|
||||
}
|
||||
return res;
|
||||
while (res && mc) {
|
||||
res = umount_one(mc->m.mnt_fsname, mc->m.mnt_dir,
|
||||
mc->m.mnt_type, mc->m.mnt_opts, mc);
|
||||
mc = getmntfilesbackward (file, mc);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Unmount all filesystems of type VFSTYPES found in mtab. Since we are
|
||||
|
@ -533,6 +525,7 @@ get_value(string_list list, char *s) {
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
/*=======================================================================*/
|
||||
|
||||
static int
|
||||
umount_file (char *arg) {
|
||||
|
@ -541,25 +534,19 @@ umount_file (char *arg) {
|
|||
string_list options;
|
||||
int fstab_has_user, fstab_has_users, fstab_has_owner, ok;
|
||||
|
||||
file = canonicalize(arg); /* mtab paths are canonicalized */
|
||||
file = canonicalize (arg); /* mtab paths are canonicalized */
|
||||
if (verbose > 1)
|
||||
printf(_("Trying to umount %s\n"), file);
|
||||
|
||||
mc = getmntdirbackward(file, NULL);
|
||||
if (!mc)
|
||||
mc = getmntdevbackward(file, NULL);
|
||||
mc = getmntfilesbackward (file, NULL);
|
||||
if (!mc && verbose)
|
||||
printf(_("Could not find %s in mtab\n"), file);
|
||||
|
||||
if (suid) {
|
||||
if (!mc)
|
||||
die(2,
|
||||
_("umount: %s is not mounted (according to mtab)"),
|
||||
file);
|
||||
if (!is_mounted_once(file))
|
||||
die(2,
|
||||
_("umount: it seems %s is mounted multiple times"),
|
||||
file);
|
||||
die (2, _("umount: %s is not mounted (according to mtab)"), file);
|
||||
if (getmntfilesbackward (file, mc))
|
||||
die (2, _("umount: it seems %s is mounted multiple times"), file);
|
||||
|
||||
/* If fstab contains the two lines
|
||||
/dev/sda1 /mnt/zip auto user,noauto 0 0
|
||||
|
|
697
po/cat-id-tbl.c
697
po/cat-id-tbl.c
|
@ -2046,7 +2046,7 @@ mount: the kernel does not recognize %s as a block device\n\
|
|||
{"label", 1552},
|
||||
{"mount: no such partition found", 1553},
|
||||
{"mount: no type was given - I'll assume nfs because of the colon\n", 1554},
|
||||
{"mount: no type was given - I'll assume smbfs because of the // prefix\n", 1555},
|
||||
{"mount: no type was given - I'll assume smb because of the // prefix\n", 1555},
|
||||
{"mount: backgrounding \"%s\"\n", 1556},
|
||||
{"mount: giving up \"%s\"\n", 1557},
|
||||
{"mount: %s already mounted on %s\n", 1558},
|
||||
|
@ -2070,292 +2070,291 @@ or move a subtree:\n\
|
|||
mount --move olddir newdir\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] [-p passwdfd].\n\
|
||||
Other options: [-nfFrsvw] [-o options].\n\
|
||||
For many more details, say man 8 mount .\n", 1559},
|
||||
{"mount: argument to -p or --pass-fd must be a number", 1560},
|
||||
{"mount: only root can do that", 1561},
|
||||
{"mount: no %s found - creating it..\n", 1562},
|
||||
{"mount: the label %s occurs on both %s and %s - not mounted\n", 1563},
|
||||
{"mount: mounting %s\n", 1564},
|
||||
{"nothing was mounted", 1565},
|
||||
{"mount: cannot find %s in %s", 1566},
|
||||
{"mount: can't find %s in %s or %s", 1567},
|
||||
{"mount: only root can do that", 1560},
|
||||
{"mount: no %s found - creating it..\n", 1561},
|
||||
{"mount: the label %s occurs on both %s and %s - not mounted\n", 1562},
|
||||
{"mount: mounting %s\n", 1563},
|
||||
{"nothing was mounted", 1564},
|
||||
{"mount: cannot find %s in %s", 1565},
|
||||
{"mount: can't find %s in %s or %s", 1566},
|
||||
{"\
|
||||
mount: could not open %s, so UUID and LABEL conversion cannot be done.\n", 1568},
|
||||
{"mount: bad UUID", 1569},
|
||||
{"mount: error while guessing filesystem type\n", 1570},
|
||||
{"mount: you didn't specify a filesystem type for %s\n", 1571},
|
||||
{" I will try all types mentioned in %s or %s\n", 1572},
|
||||
{" and it looks like this is swapspace\n", 1573},
|
||||
{" I will try type %s\n", 1574},
|
||||
{"Trying %s\n", 1575},
|
||||
{"mount: excessively long host:dir argument\n", 1576},
|
||||
{"mount: warning: multiple hostnames not supported\n", 1577},
|
||||
{"mount: directory to mount not in host:dir format\n", 1578},
|
||||
{"mount: can't get address for %s\n", 1579},
|
||||
{"mount: got bad hp->h_length\n", 1580},
|
||||
{"mount: excessively long option argument\n", 1581},
|
||||
{"Warning: Unrecognized proto= option.\n", 1582},
|
||||
{"Warning: Option namlen is not supported.\n", 1583},
|
||||
{"unknown nfs mount parameter: %s=%d\n", 1584},
|
||||
{"Warning: option nolock is not supported.\n", 1585},
|
||||
{"unknown nfs mount option: %s%s\n", 1586},
|
||||
{"mount: got bad hp->h_length?\n", 1587},
|
||||
{"NFS over TCP is not supported.\n", 1588},
|
||||
{"nfs socket", 1589},
|
||||
{"nfs bindresvport", 1590},
|
||||
{"nfs server reported service unavailable", 1591},
|
||||
{"used portmapper to find NFS port\n", 1592},
|
||||
{"using port %d for nfs deamon\n", 1593},
|
||||
{"nfs connect", 1594},
|
||||
{"unknown nfs status return value: %d", 1595},
|
||||
{"bug in xstrndup call", 1596},
|
||||
mount: could not open %s, so UUID and LABEL conversion cannot be done.\n", 1567},
|
||||
{"mount: bad UUID", 1568},
|
||||
{"mount: error while guessing filesystem type\n", 1569},
|
||||
{"mount: you didn't specify a filesystem type for %s\n", 1570},
|
||||
{" I will try all types mentioned in %s or %s\n", 1571},
|
||||
{" and it looks like this is swapspace\n", 1572},
|
||||
{" I will try type %s\n", 1573},
|
||||
{"Trying %s\n", 1574},
|
||||
{"mount: excessively long host:dir argument\n", 1575},
|
||||
{"mount: warning: multiple hostnames not supported\n", 1576},
|
||||
{"mount: directory to mount not in host:dir format\n", 1577},
|
||||
{"mount: can't get address for %s\n", 1578},
|
||||
{"mount: got bad hp->h_length\n", 1579},
|
||||
{"mount: excessively long option argument\n", 1580},
|
||||
{"Warning: Unrecognized proto= option.\n", 1581},
|
||||
{"Warning: Option namlen is not supported.\n", 1582},
|
||||
{"unknown nfs mount parameter: %s=%d\n", 1583},
|
||||
{"Warning: option nolock is not supported.\n", 1584},
|
||||
{"unknown nfs mount option: %s%s\n", 1585},
|
||||
{"mount: got bad hp->h_length?\n", 1586},
|
||||
{"NFS over TCP is not supported.\n", 1587},
|
||||
{"nfs socket", 1588},
|
||||
{"nfs bindresvport", 1589},
|
||||
{"nfs server reported service unavailable", 1590},
|
||||
{"used portmapper to find NFS port\n", 1591},
|
||||
{"using port %d for nfs deamon\n", 1592},
|
||||
{"nfs connect", 1593},
|
||||
{"unknown nfs status return value: %d", 1594},
|
||||
{"bug in xstrndup call", 1595},
|
||||
{"\
|
||||
usage: %s [-hV]\n\
|
||||
%s -a [-e] [-v]\n\
|
||||
%s [-v] [-p priority] special ...\n\
|
||||
%s [-s]\n", 1597},
|
||||
%s [-s]\n", 1596},
|
||||
{"\
|
||||
usage: %s [-hV]\n\
|
||||
%s -a [-v]\n\
|
||||
%s [-v] special ...\n", 1598},
|
||||
{"%s on %s\n", 1599},
|
||||
{"swapon: cannot stat %s: %s\n", 1600},
|
||||
{"swapon: warning: %s has insecure permissions %04o, %04o suggested\n", 1601},
|
||||
{"swapon: Skipping file %s - it appears to have holes.\n", 1602},
|
||||
{"Not superuser.\n", 1603},
|
||||
{"%s: cannot open %s: %s\n", 1604},
|
||||
{"umount: compiled without support for -f\n", 1605},
|
||||
{"host: %s, directory: %s\n", 1606},
|
||||
{"umount: can't get address for %s\n", 1607},
|
||||
{"umount: got bad hostp->h_length\n", 1608},
|
||||
{"umount: %s: invalid block device", 1609},
|
||||
{"umount: %s: not mounted", 1610},
|
||||
{"umount: %s: can't write superblock", 1611},
|
||||
{"umount: %s: device is busy", 1612},
|
||||
{"umount: %s: not found", 1613},
|
||||
{"umount: %s: must be superuser to umount", 1614},
|
||||
{"umount: %s: block devices not permitted on fs", 1615},
|
||||
{"umount: %s: %s", 1616},
|
||||
{"no umount2, trying umount...\n", 1617},
|
||||
{"could not umount %s - trying %s instead\n", 1618},
|
||||
{"umount: %s busy - remounted read-only\n", 1619},
|
||||
{"umount: could not remount %s read-only\n", 1620},
|
||||
{"%s umounted\n", 1621},
|
||||
{"umount: cannot find list of filesystems to unmount", 1622},
|
||||
%s [-v] special ...\n", 1597},
|
||||
{"%s on %s\n", 1598},
|
||||
{"swapon: cannot stat %s: %s\n", 1599},
|
||||
{"swapon: warning: %s has insecure permissions %04o, %04o suggested\n", 1600},
|
||||
{"swapon: Skipping file %s - it appears to have holes.\n", 1601},
|
||||
{"Not superuser.\n", 1602},
|
||||
{"%s: cannot open %s: %s\n", 1603},
|
||||
{"umount: compiled without support for -f\n", 1604},
|
||||
{"host: %s, directory: %s\n", 1605},
|
||||
{"umount: can't get address for %s\n", 1606},
|
||||
{"umount: got bad hostp->h_length\n", 1607},
|
||||
{"umount: %s: invalid block device", 1608},
|
||||
{"umount: %s: not mounted", 1609},
|
||||
{"umount: %s: can't write superblock", 1610},
|
||||
{"umount: %s: device is busy", 1611},
|
||||
{"umount: %s: not found", 1612},
|
||||
{"umount: %s: must be superuser to umount", 1613},
|
||||
{"umount: %s: block devices not permitted on fs", 1614},
|
||||
{"umount: %s: %s", 1615},
|
||||
{"no umount2, trying umount...\n", 1616},
|
||||
{"could not umount %s - trying %s instead\n", 1617},
|
||||
{"umount: %s busy - remounted read-only\n", 1618},
|
||||
{"umount: could not remount %s read-only\n", 1619},
|
||||
{"%s umounted\n", 1620},
|
||||
{"umount: cannot find list of filesystems to unmount", 1621},
|
||||
{"\
|
||||
Usage: umount [-hV]\n\
|
||||
umount -a [-f] [-r] [-n] [-v] [-t vfstypes] [-O opts]\n\
|
||||
umount [-f] [-r] [-n] [-v] special | node...\n", 1623},
|
||||
{"Trying to umount %s\n", 1624},
|
||||
{"Could not find %s in mtab\n", 1625},
|
||||
{"umount: %s is not mounted (according to mtab)", 1626},
|
||||
{"umount: it seems %s is mounted multiple times", 1627},
|
||||
{"umount: %s is not in the fstab (and you are not root)", 1628},
|
||||
{"umount: %s mount disagrees with the fstab", 1629},
|
||||
{"umount: only root can unmount %s from %s", 1630},
|
||||
{"umount: only root can do that", 1631},
|
||||
{"You must be root to set the Ctrl-Alt-Del behaviour.\n", 1632},
|
||||
{"Usage: ctrlaltdel hard|soft\n", 1633},
|
||||
umount [-f] [-r] [-n] [-v] special | node...\n", 1622},
|
||||
{"Trying to umount %s\n", 1623},
|
||||
{"Could not find %s in mtab\n", 1624},
|
||||
{"umount: %s is not mounted (according to mtab)", 1625},
|
||||
{"umount: it seems %s is mounted multiple times", 1626},
|
||||
{"umount: %s is not in the fstab (and you are not root)", 1627},
|
||||
{"umount: %s mount disagrees with the fstab", 1628},
|
||||
{"umount: only root can unmount %s from %s", 1629},
|
||||
{"umount: only root can do that", 1630},
|
||||
{"You must be root to set the Ctrl-Alt-Del behaviour.\n", 1631},
|
||||
{"Usage: ctrlaltdel hard|soft\n", 1632},
|
||||
{"\
|
||||
File %s, For threshold value %lu, Maximum characters in fifo were %d,\n\
|
||||
and the maximum transfer rate in characters/second was %f\n", 1634},
|
||||
and the maximum transfer rate in characters/second was %f\n", 1633},
|
||||
{"\
|
||||
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", 1635},
|
||||
{"Invalid interval value: %s\n", 1636},
|
||||
{"Invalid set value: %s\n", 1637},
|
||||
{"Invalid default value: %s\n", 1638},
|
||||
{"Invalid set time value: %s\n", 1639},
|
||||
{"Invalid default time value: %s\n", 1640},
|
||||
and the maximum transfer rate in characters/second was %f\n", 1634},
|
||||
{"Invalid interval value: %s\n", 1635},
|
||||
{"Invalid set value: %s\n", 1636},
|
||||
{"Invalid default value: %s\n", 1637},
|
||||
{"Invalid set time value: %s\n", 1638},
|
||||
{"Invalid default time value: %s\n", 1639},
|
||||
{"\
|
||||
Usage: %s [-q [-i interval]] ([-s value]|[-S value]) ([-t value]|[-T value]) \
|
||||
[-g|-G] file [file...]\n", 1641},
|
||||
{"Can't open %s: %s\n", 1642},
|
||||
{"Can't set %s to threshold %d: %s\n", 1643},
|
||||
{"Can't set %s to time threshold %d: %s\n", 1644},
|
||||
{"Can't get threshold for %s: %s\n", 1645},
|
||||
{"Can't get timeout for %s: %s\n", 1646},
|
||||
{"%s: %ld current threshold and %ld current timeout\n", 1647},
|
||||
{"%s: %ld default threshold and %ld default timeout\n", 1648},
|
||||
{"Can't set signal handler", 1649},
|
||||
{"gettimeofday failed", 1650},
|
||||
{"Can't issue CYGETMON on %s: %s\n", 1651},
|
||||
[-g|-G] file [file...]\n", 1640},
|
||||
{"Can't open %s: %s\n", 1641},
|
||||
{"Can't set %s to threshold %d: %s\n", 1642},
|
||||
{"Can't set %s to time threshold %d: %s\n", 1643},
|
||||
{"Can't get threshold for %s: %s\n", 1644},
|
||||
{"Can't get timeout for %s: %s\n", 1645},
|
||||
{"%s: %ld current threshold and %ld current timeout\n", 1646},
|
||||
{"%s: %ld default threshold and %ld default timeout\n", 1647},
|
||||
{"Can't set signal handler", 1648},
|
||||
{"gettimeofday failed", 1649},
|
||||
{"Can't issue CYGETMON on %s: %s\n", 1650},
|
||||
{"\
|
||||
%s: %lu ints, %lu/%lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1652},
|
||||
{" %f int/sec; %f rec, %f send (char/sec)\n", 1653},
|
||||
%s: %lu ints, %lu/%lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1651},
|
||||
{" %f int/sec; %f rec, %f send (char/sec)\n", 1652},
|
||||
{"\
|
||||
%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1654},
|
||||
{" %f int/sec; %f rec (char/sec)\n", 1655},
|
||||
{"Usage: %s [-c] [-n level] [-s bufsize]\n", 1656},
|
||||
{"invalid id: %s\n", 1657},
|
||||
{"cannot remove id %s (%s)\n", 1658},
|
||||
{"deprecated usage: %s {shm | msg | sem} id ...\n", 1659},
|
||||
{"unknown resource type: %s\n", 1660},
|
||||
{"resource(s) deleted\n", 1661},
|
||||
%s: %lu ints, %lu chars; fifo: %lu thresh, %lu tmout, %lu max, %lu now\n", 1653},
|
||||
{" %f int/sec; %f rec (char/sec)\n", 1654},
|
||||
{"Usage: %s [-c] [-n level] [-s bufsize]\n", 1655},
|
||||
{"invalid id: %s\n", 1656},
|
||||
{"cannot remove id %s (%s)\n", 1657},
|
||||
{"deprecated usage: %s {shm | msg | sem} id ...\n", 1658},
|
||||
{"unknown resource type: %s\n", 1659},
|
||||
{"resource(s) deleted\n", 1660},
|
||||
{"\
|
||||
usage: %s [ [-q msqid] [-m shmid] [-s semid]\n\
|
||||
[-Q msgkey] [-M shmkey] [-S semkey] ... ]\n", 1662},
|
||||
{"%s: illegal option -- %c\n", 1663},
|
||||
{"%s: illegal key (%s)\n", 1664},
|
||||
{"permission denied for key", 1665},
|
||||
{"already removed key", 1666},
|
||||
{"invalid key", 1667},
|
||||
{"unknown error in key", 1668},
|
||||
{"permission denied for id", 1669},
|
||||
{"invalid id", 1670},
|
||||
{"already removed id", 1671},
|
||||
{"unknown error in id", 1672},
|
||||
{"%s: %s (%s)\n", 1673},
|
||||
{"%s: unknown argument: %s\n", 1674},
|
||||
{"usage : %s -asmq -tclup \n", 1675},
|
||||
{"\t%s [-s -m -q] -i id\n", 1676},
|
||||
{"\t%s -h for help.\n", 1677},
|
||||
[-Q msgkey] [-M shmkey] [-S semkey] ... ]\n", 1661},
|
||||
{"%s: illegal option -- %c\n", 1662},
|
||||
{"%s: illegal key (%s)\n", 1663},
|
||||
{"permission denied for key", 1664},
|
||||
{"already removed key", 1665},
|
||||
{"invalid key", 1666},
|
||||
{"unknown error in key", 1667},
|
||||
{"permission denied for id", 1668},
|
||||
{"invalid id", 1669},
|
||||
{"already removed id", 1670},
|
||||
{"unknown error in id", 1671},
|
||||
{"%s: %s (%s)\n", 1672},
|
||||
{"%s: unknown argument: %s\n", 1673},
|
||||
{"usage : %s -asmq -tclup \n", 1674},
|
||||
{"\t%s [-s -m -q] -i id\n", 1675},
|
||||
{"\t%s -h for help.\n", 1676},
|
||||
{"\
|
||||
%s provides information on ipc facilities for which you have read access.\n", 1678},
|
||||
%s provides information on ipc facilities for which you have read access.\n", 1677},
|
||||
{"\
|
||||
Resource Specification:\n\
|
||||
\t-m : shared_mem\n\
|
||||
\t-q : messages\n", 1679},
|
||||
\t-q : messages\n", 1678},
|
||||
{"\
|
||||
\t-s : semaphores\n\
|
||||
\t-a : all (default)\n", 1680},
|
||||
\t-a : all (default)\n", 1679},
|
||||
{"\
|
||||
Output Format:\n\
|
||||
\t-t : time\n\
|
||||
\t-p : pid\n\
|
||||
\t-c : creator\n", 1681},
|
||||
\t-c : creator\n", 1680},
|
||||
{"\
|
||||
\t-l : limits\n\
|
||||
\t-u : summary\n", 1682},
|
||||
{"-i id [-s -q -m] : details on resource identified by id\n", 1683},
|
||||
{"kernel not configured for shared memory\n", 1684},
|
||||
{"------ Shared Memory Limits --------\n", 1685},
|
||||
{"max number of segments = %ld\n", 1686},
|
||||
{"max seg size (kbytes) = %ld\n", 1687},
|
||||
{"max total shared memory (kbytes) = %ld\n", 1688},
|
||||
{"min seg size (bytes) = %ld\n", 1689},
|
||||
{"------ Shared Memory Status --------\n", 1690},
|
||||
{"segments allocated %d\n", 1691},
|
||||
{"pages allocated %ld\n", 1692},
|
||||
{"pages resident %ld\n", 1693},
|
||||
{"pages swapped %ld\n", 1694},
|
||||
{"Swap performance: %ld attempts\t %ld successes\n", 1695},
|
||||
{"------ Shared Memory Segment Creators/Owners --------\n", 1696},
|
||||
{"%-10s %-10s %-10s %-10s %-10s %-10s\n", 1697},
|
||||
{"shmid", 1698},
|
||||
{"perms", 1699},
|
||||
{"cuid", 1700},
|
||||
{"cgid", 1701},
|
||||
{"uid", 1702},
|
||||
{"gid", 1703},
|
||||
{"------ Shared Memory Attach/Detach/Change Times --------\n", 1704},
|
||||
{"%-10s %-10s %-20s %-20s %-20s\n", 1705},
|
||||
{"owner", 1706},
|
||||
{"attached", 1707},
|
||||
{"detached", 1708},
|
||||
{"changed", 1709},
|
||||
{"------ Shared Memory Creator/Last-op --------\n", 1710},
|
||||
{"%-10s %-10s %-10s %-10s\n", 1711},
|
||||
{"cpid", 1712},
|
||||
{"lpid", 1713},
|
||||
{"------ Shared Memory Segments --------\n", 1714},
|
||||
{"%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n", 1715},
|
||||
{"key", 1716},
|
||||
{"bytes", 1717},
|
||||
{"nattch", 1718},
|
||||
{"status", 1719},
|
||||
{"Not set", 1720},
|
||||
{"dest", 1721},
|
||||
{"locked", 1722},
|
||||
{"kernel not configured for semaphores\n", 1723},
|
||||
{"------ Semaphore Limits --------\n", 1724},
|
||||
{"max number of arrays = %d\n", 1725},
|
||||
{"max semaphores per array = %d\n", 1726},
|
||||
{"max semaphores system wide = %d\n", 1727},
|
||||
{"max ops per semop call = %d\n", 1728},
|
||||
{"semaphore max value = %d\n", 1729},
|
||||
{"------ Semaphore Status --------\n", 1730},
|
||||
{"used arrays = %d\n", 1731},
|
||||
{"allocated semaphores = %d\n", 1732},
|
||||
{"------ Semaphore Arrays Creators/Owners --------\n", 1733},
|
||||
{"semid", 1734},
|
||||
{"------ Shared Memory Operation/Change Times --------\n", 1735},
|
||||
{"%-8s %-10s %-26.24s %-26.24s\n", 1736},
|
||||
{"last-op", 1737},
|
||||
{"last-changed", 1738},
|
||||
{"------ Semaphore Arrays --------\n", 1739},
|
||||
{"%-10s %-10s %-10s %-10s %-10s\n", 1740},
|
||||
{"nsems", 1741},
|
||||
{"kernel not configured for message queues\n", 1742},
|
||||
{"------ Messages: Limits --------\n", 1743},
|
||||
{"max queues system wide = %d\n", 1744},
|
||||
{"max size of message (bytes) = %d\n", 1745},
|
||||
{"default max size of queue (bytes) = %d\n", 1746},
|
||||
{"------ Messages: Status --------\n", 1747},
|
||||
{"allocated queues = %d\n", 1748},
|
||||
{"used headers = %d\n", 1749},
|
||||
{"used space = %d bytes\n", 1750},
|
||||
{"------ Message Queues: Creators/Owners --------\n", 1751},
|
||||
{"msqid", 1752},
|
||||
{"------ Message Queues Send/Recv/Change Times --------\n", 1753},
|
||||
{"%-8s %-10s %-20s %-20s %-20s\n", 1754},
|
||||
{"send", 1755},
|
||||
{"recv", 1756},
|
||||
{"change", 1757},
|
||||
{"------ Message Queues PIDs --------\n", 1758},
|
||||
{"lspid", 1759},
|
||||
{"lrpid", 1760},
|
||||
{"------ Message Queues --------\n", 1761},
|
||||
{"%-10s %-10s %-10s %-10s %-12s %-12s\n", 1762},
|
||||
{"used-bytes", 1763},
|
||||
{"messages", 1764},
|
||||
\t-u : summary\n", 1681},
|
||||
{"-i id [-s -q -m] : details on resource identified by id\n", 1682},
|
||||
{"kernel not configured for shared memory\n", 1683},
|
||||
{"------ Shared Memory Limits --------\n", 1684},
|
||||
{"max number of segments = %ld\n", 1685},
|
||||
{"max seg size (kbytes) = %ld\n", 1686},
|
||||
{"max total shared memory (kbytes) = %ld\n", 1687},
|
||||
{"min seg size (bytes) = %ld\n", 1688},
|
||||
{"------ Shared Memory Status --------\n", 1689},
|
||||
{"segments allocated %d\n", 1690},
|
||||
{"pages allocated %ld\n", 1691},
|
||||
{"pages resident %ld\n", 1692},
|
||||
{"pages swapped %ld\n", 1693},
|
||||
{"Swap performance: %ld attempts\t %ld successes\n", 1694},
|
||||
{"------ Shared Memory Segment Creators/Owners --------\n", 1695},
|
||||
{"%-10s %-10s %-10s %-10s %-10s %-10s\n", 1696},
|
||||
{"shmid", 1697},
|
||||
{"perms", 1698},
|
||||
{"cuid", 1699},
|
||||
{"cgid", 1700},
|
||||
{"uid", 1701},
|
||||
{"gid", 1702},
|
||||
{"------ Shared Memory Attach/Detach/Change Times --------\n", 1703},
|
||||
{"%-10s %-10s %-20s %-20s %-20s\n", 1704},
|
||||
{"owner", 1705},
|
||||
{"attached", 1706},
|
||||
{"detached", 1707},
|
||||
{"changed", 1708},
|
||||
{"------ Shared Memory Creator/Last-op --------\n", 1709},
|
||||
{"%-10s %-10s %-10s %-10s\n", 1710},
|
||||
{"cpid", 1711},
|
||||
{"lpid", 1712},
|
||||
{"------ Shared Memory Segments --------\n", 1713},
|
||||
{"%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n", 1714},
|
||||
{"key", 1715},
|
||||
{"bytes", 1716},
|
||||
{"nattch", 1717},
|
||||
{"status", 1718},
|
||||
{"Not set", 1719},
|
||||
{"dest", 1720},
|
||||
{"locked", 1721},
|
||||
{"kernel not configured for semaphores\n", 1722},
|
||||
{"------ Semaphore Limits --------\n", 1723},
|
||||
{"max number of arrays = %d\n", 1724},
|
||||
{"max semaphores per array = %d\n", 1725},
|
||||
{"max semaphores system wide = %d\n", 1726},
|
||||
{"max ops per semop call = %d\n", 1727},
|
||||
{"semaphore max value = %d\n", 1728},
|
||||
{"------ Semaphore Status --------\n", 1729},
|
||||
{"used arrays = %d\n", 1730},
|
||||
{"allocated semaphores = %d\n", 1731},
|
||||
{"------ Semaphore Arrays Creators/Owners --------\n", 1732},
|
||||
{"semid", 1733},
|
||||
{"------ Shared Memory Operation/Change Times --------\n", 1734},
|
||||
{"%-8s %-10s %-26.24s %-26.24s\n", 1735},
|
||||
{"last-op", 1736},
|
||||
{"last-changed", 1737},
|
||||
{"------ Semaphore Arrays --------\n", 1738},
|
||||
{"%-10s %-10s %-10s %-10s %-10s\n", 1739},
|
||||
{"nsems", 1740},
|
||||
{"kernel not configured for message queues\n", 1741},
|
||||
{"------ Messages: Limits --------\n", 1742},
|
||||
{"max queues system wide = %d\n", 1743},
|
||||
{"max size of message (bytes) = %d\n", 1744},
|
||||
{"default max size of queue (bytes) = %d\n", 1745},
|
||||
{"------ Messages: Status --------\n", 1746},
|
||||
{"allocated queues = %d\n", 1747},
|
||||
{"used headers = %d\n", 1748},
|
||||
{"used space = %d bytes\n", 1749},
|
||||
{"------ Message Queues: Creators/Owners --------\n", 1750},
|
||||
{"msqid", 1751},
|
||||
{"------ Message Queues Send/Recv/Change Times --------\n", 1752},
|
||||
{"%-8s %-10s %-20s %-20s %-20s\n", 1753},
|
||||
{"send", 1754},
|
||||
{"recv", 1755},
|
||||
{"change", 1756},
|
||||
{"------ Message Queues PIDs --------\n", 1757},
|
||||
{"lspid", 1758},
|
||||
{"lrpid", 1759},
|
||||
{"------ Message Queues --------\n", 1760},
|
||||
{"%-10s %-10s %-10s %-10s %-12s %-12s\n", 1761},
|
||||
{"used-bytes", 1762},
|
||||
{"messages", 1763},
|
||||
{"\
|
||||
\n\
|
||||
Shared memory Segment shmid=%d\n", 1765},
|
||||
{"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n", 1766},
|
||||
{"mode=%#o\taccess_perms=%#o\n", 1767},
|
||||
{"bytes=%ld\tlpid=%d\tcpid=%d\tnattch=%ld\n", 1768},
|
||||
{"att_time=%-26.24s\n", 1769},
|
||||
{"det_time=%-26.24s\n", 1770},
|
||||
{"change_time=%-26.24s\n", 1771},
|
||||
Shared memory Segment shmid=%d\n", 1764},
|
||||
{"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n", 1765},
|
||||
{"mode=%#o\taccess_perms=%#o\n", 1766},
|
||||
{"bytes=%ld\tlpid=%d\tcpid=%d\tnattch=%ld\n", 1767},
|
||||
{"att_time=%-26.24s\n", 1768},
|
||||
{"det_time=%-26.24s\n", 1769},
|
||||
{"change_time=%-26.24s\n", 1770},
|
||||
{"\
|
||||
\n\
|
||||
Message Queue msqid=%d\n", 1772},
|
||||
{"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n", 1773},
|
||||
{"cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n", 1774},
|
||||
{"send_time=%-26.24s\n", 1775},
|
||||
{"rcv_time=%-26.24s\n", 1776},
|
||||
Message Queue msqid=%d\n", 1771},
|
||||
{"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n", 1772},
|
||||
{"cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n", 1773},
|
||||
{"send_time=%-26.24s\n", 1774},
|
||||
{"rcv_time=%-26.24s\n", 1775},
|
||||
{"\
|
||||
\n\
|
||||
Semaphore Array semid=%d\n", 1777},
|
||||
{"uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n", 1778},
|
||||
{"mode=%#o, access_perms=%#o\n", 1779},
|
||||
{"nsems = %ld\n", 1780},
|
||||
{"otime = %-26.24s\n", 1781},
|
||||
{"ctime = %-26.24s\n", 1782},
|
||||
{"semnum", 1783},
|
||||
{"value", 1784},
|
||||
{"ncount", 1785},
|
||||
{"zcount", 1786},
|
||||
{"pid", 1787},
|
||||
{"usage: rdev [ -rv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]", 1788},
|
||||
Semaphore Array semid=%d\n", 1776},
|
||||
{"uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n", 1777},
|
||||
{"mode=%#o, access_perms=%#o\n", 1778},
|
||||
{"nsems = %ld\n", 1779},
|
||||
{"otime = %-26.24s\n", 1780},
|
||||
{"ctime = %-26.24s\n", 1781},
|
||||
{"semnum", 1782},
|
||||
{"value", 1783},
|
||||
{"ncount", 1784},
|
||||
{"zcount", 1785},
|
||||
{"pid", 1786},
|
||||
{"usage: rdev [ -rv ] [ -o OFFSET ] [ IMAGE [ VALUE [ OFFSET ] ] ]", 1787},
|
||||
{"\
|
||||
rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device", 1789},
|
||||
{" rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2", 1790},
|
||||
{" rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)", 1791},
|
||||
{" rdev -r /dev/fd0 627 set the RAMDISK size", 1792},
|
||||
{" rdev -v /dev/fd0 1 set the bootup VIDEOMODE", 1793},
|
||||
{" rdev -o N ... use the byte offset N", 1794},
|
||||
{" rootflags ... same as rdev -R", 1795},
|
||||
{" ramsize ... same as rdev -r", 1796},
|
||||
{" vidmode ... same as rdev -v", 1797},
|
||||
rdev /dev/fd0 (or rdev /linux, etc.) displays the current ROOT device", 1788},
|
||||
{" rdev /dev/fd0 /dev/hda2 sets ROOT to /dev/hda2", 1789},
|
||||
{" rdev -R /dev/fd0 1 set the ROOTFLAGS (readonly status)", 1790},
|
||||
{" rdev -r /dev/fd0 627 set the RAMDISK size", 1791},
|
||||
{" rdev -v /dev/fd0 1 set the bootup VIDEOMODE", 1792},
|
||||
{" rdev -o N ... use the byte offset N", 1793},
|
||||
{" rootflags ... same as rdev -R", 1794},
|
||||
{" ramsize ... same as rdev -r", 1795},
|
||||
{" vidmode ... same as rdev -v", 1796},
|
||||
{"\
|
||||
Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...", 1798},
|
||||
{" use -R 1 to mount root readonly, -R 0 for read/write.", 1799},
|
||||
{"missing comma", 1800},
|
||||
{"out of memory", 1801},
|
||||
Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...", 1797},
|
||||
{" use -R 1 to mount root readonly, -R 0 for read/write.", 1798},
|
||||
{"missing comma", 1799},
|
||||
{"out of memory", 1800},
|
||||
{"\
|
||||
%s: Usage: \"%s [options]\n\
|
||||
\t -m <mapfile> (defaults: \"%s\" and\n\
|
||||
|
@ -2368,76 +2367,76 @@ Note: video modes are: -3=Ask, -2=Extended, -1=NormalVga, 1=key1, 2=key2,...", 1
|
|||
\t -b print individual histogram-bin counts\n\
|
||||
\t -r reset all the counters (root only)\n\
|
||||
\t -n disable byte order auto-detection\n\
|
||||
\t -V print version and exit\n", 1802},
|
||||
{"%s version %s\n", 1803},
|
||||
{"Sampling_step: %i\n", 1804},
|
||||
{"%s: %s(%i): wrong map line\n", 1805},
|
||||
{"%s: can't find \"_stext\" in %s\n", 1806},
|
||||
{"%s: profile address out of range. Wrong map file?\n", 1807},
|
||||
{"total", 1808},
|
||||
\t -V print version and exit\n", 1801},
|
||||
{"%s version %s\n", 1802},
|
||||
{"Sampling_step: %i\n", 1803},
|
||||
{"%s: %s(%i): wrong map line\n", 1804},
|
||||
{"%s: can't find \"_stext\" in %s\n", 1805},
|
||||
{"%s: profile address out of range. Wrong map file?\n", 1806},
|
||||
{"total", 1807},
|
||||
{"\
|
||||
usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n", 1809},
|
||||
{"renice: %s: unknown user\n", 1810},
|
||||
{"renice: %s: bad value\n", 1811},
|
||||
{"getpriority", 1812},
|
||||
{"setpriority", 1813},
|
||||
{"%d: old priority %d, new priority %d\n", 1814},
|
||||
{"usage: %s program [arg ...]\n", 1815},
|
||||
usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]\n", 1808},
|
||||
{"renice: %s: unknown user\n", 1809},
|
||||
{"renice: %s: bad value\n", 1810},
|
||||
{"getpriority", 1811},
|
||||
{"setpriority", 1812},
|
||||
{"%d: old priority %d, new priority %d\n", 1813},
|
||||
{"usage: %s program [arg ...]\n", 1814},
|
||||
{"\
|
||||
Usage: %s <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> | \n\
|
||||
-a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s | \n\
|
||||
-T [on|off] ]\n", 1816},
|
||||
{"malloc error", 1817},
|
||||
{"%s: bad value\n", 1818},
|
||||
{"%s: %s not an lp device.\n", 1819},
|
||||
{"%s status is %d", 1820},
|
||||
{", busy", 1821},
|
||||
{", ready", 1822},
|
||||
{", out of paper", 1823},
|
||||
{", on-line", 1824},
|
||||
{", error", 1825},
|
||||
{"LPGETIRQ error", 1826},
|
||||
{"%s using IRQ %d\n", 1827},
|
||||
{"%s using polling\n", 1828},
|
||||
{"col: bad -l argument %s.\n", 1829},
|
||||
{"usage: col [-bfpx] [-l nline]\n", 1830},
|
||||
{"col: write error.\n", 1831},
|
||||
{"col: warning: can't back up %s.\n", 1832},
|
||||
{"past first line", 1833},
|
||||
{"-- line already flushed", 1834},
|
||||
{"usage: %s [ - ] [ -2 ] [ file ... ]\n", 1835},
|
||||
{"line too long", 1836},
|
||||
{"usage: column [-tx] [-c columns] [file ...]\n", 1837},
|
||||
{"hexdump: bad length value.\n", 1838},
|
||||
{"hexdump: bad skip value.\n", 1839},
|
||||
-T [on|off] ]\n", 1815},
|
||||
{"malloc error", 1816},
|
||||
{"%s: bad value\n", 1817},
|
||||
{"%s: %s not an lp device.\n", 1818},
|
||||
{"%s status is %d", 1819},
|
||||
{", busy", 1820},
|
||||
{", ready", 1821},
|
||||
{", out of paper", 1822},
|
||||
{", on-line", 1823},
|
||||
{", error", 1824},
|
||||
{"LPGETIRQ error", 1825},
|
||||
{"%s using IRQ %d\n", 1826},
|
||||
{"%s using polling\n", 1827},
|
||||
{"col: bad -l argument %s.\n", 1828},
|
||||
{"usage: col [-bfpx] [-l nline]\n", 1829},
|
||||
{"col: write error.\n", 1830},
|
||||
{"col: warning: can't back up %s.\n", 1831},
|
||||
{"past first line", 1832},
|
||||
{"-- line already flushed", 1833},
|
||||
{"usage: %s [ - ] [ -2 ] [ file ... ]\n", 1834},
|
||||
{"line too long", 1835},
|
||||
{"usage: column [-tx] [-c columns] [file ...]\n", 1836},
|
||||
{"hexdump: bad length value.\n", 1837},
|
||||
{"hexdump: bad skip value.\n", 1838},
|
||||
{"\
|
||||
hexdump: [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n", 1840},
|
||||
{"usage: %s [-dflpcsu] [+linenum | +/pattern] name1 name2 ...\n", 1841},
|
||||
hexdump: [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]\n", 1839},
|
||||
{"usage: %s [-dflpcsu] [+linenum | +/pattern] name1 name2 ...\n", 1840},
|
||||
{"\
|
||||
\n\
|
||||
*** %s: directory ***\n\
|
||||
\n", 1842},
|
||||
\n", 1841},
|
||||
{"\
|
||||
\n\
|
||||
******** %s: Not a text file ********\n\
|
||||
\n", 1843},
|
||||
{"[Use q or Q to quit]", 1844},
|
||||
{"--More--", 1845},
|
||||
{"(Next file: %s)", 1846},
|
||||
{"[Press space to continue, 'q' to quit.]", 1847},
|
||||
{"...back %d pages", 1848},
|
||||
{"...back 1 page", 1849},
|
||||
{"...skipping one line", 1850},
|
||||
{"...skipping %d lines", 1851},
|
||||
\n", 1842},
|
||||
{"[Use q or Q to quit]", 1843},
|
||||
{"--More--", 1844},
|
||||
{"(Next file: %s)", 1845},
|
||||
{"[Press space to continue, 'q' to quit.]", 1846},
|
||||
{"...back %d pages", 1847},
|
||||
{"...back 1 page", 1848},
|
||||
{"...skipping one line", 1849},
|
||||
{"...skipping %d lines", 1850},
|
||||
{"\
|
||||
\n\
|
||||
***Back***\n\
|
||||
\n", 1852},
|
||||
\n", 1851},
|
||||
{"\
|
||||
\n\
|
||||
Most commands optionally preceded by integer argument k. Defaults in \
|
||||
brackets.\n\
|
||||
Star (*) indicates argument becomes new default.\n", 1853},
|
||||
Star (*) indicates argument becomes new default.\n", 1852},
|
||||
{"\
|
||||
<space> Display next k lines of text [current screen size]\n\
|
||||
z Display next k lines of text [current screen size]*\n\
|
||||
|
@ -2457,63 +2456,63 @@ ctrl-L Redraw screen\n\
|
|||
:n Go to kth next file [1]\n\
|
||||
:p Go to kth previous file [1]\n\
|
||||
:f Display current file name and line number\n\
|
||||
. Repeat previous command\n", 1854},
|
||||
{"[Press 'h' for instructions.]", 1855},
|
||||
{"\"%s\" line %d", 1856},
|
||||
{"[Not a file] line %d", 1857},
|
||||
{" Overflow\n", 1858},
|
||||
{"...skipping\n", 1859},
|
||||
{"Regular expression botch", 1860},
|
||||
. Repeat previous command\n", 1853},
|
||||
{"[Press 'h' for instructions.]", 1854},
|
||||
{"\"%s\" line %d", 1855},
|
||||
{"[Not a file] line %d", 1856},
|
||||
{" Overflow\n", 1857},
|
||||
{"...skipping\n", 1858},
|
||||
{"Regular expression botch", 1859},
|
||||
{"\
|
||||
\n\
|
||||
Pattern not found\n", 1861},
|
||||
{"Pattern not found", 1862},
|
||||
{"can't fork\n", 1863},
|
||||
Pattern not found\n", 1860},
|
||||
{"Pattern not found", 1861},
|
||||
{"can't fork\n", 1862},
|
||||
{"\
|
||||
\n\
|
||||
...Skipping ", 1864},
|
||||
{"...Skipping to file ", 1865},
|
||||
{"...Skipping back to file ", 1866},
|
||||
{"Line too long", 1867},
|
||||
{"No previous command to substitute for", 1868},
|
||||
{"od: od(1) has been deprecated for hexdump(1).\n", 1869},
|
||||
{"od: hexdump(1) compatibility doesn't support the -%c option%s\n", 1870},
|
||||
{"; see strings(1).", 1871},
|
||||
{"hexdump: can't read %s.\n", 1872},
|
||||
{"hexdump: line too long.\n", 1873},
|
||||
{"hexdump: byte count with multiple conversion characters.\n", 1874},
|
||||
{"hexdump: bad byte count for conversion character %s.\n", 1875},
|
||||
{"hexdump: %%s requires a precision or a byte count.\n", 1876},
|
||||
{"hexdump: bad format {%s}\n", 1877},
|
||||
{"hexdump: bad conversion character %%%s.\n", 1878},
|
||||
...Skipping ", 1863},
|
||||
{"...Skipping to file ", 1864},
|
||||
{"...Skipping back to file ", 1865},
|
||||
{"Line too long", 1866},
|
||||
{"No previous command to substitute for", 1867},
|
||||
{"od: od(1) has been deprecated for hexdump(1).\n", 1868},
|
||||
{"od: hexdump(1) compatibility doesn't support the -%c option%s\n", 1869},
|
||||
{"; see strings(1).", 1870},
|
||||
{"hexdump: can't read %s.\n", 1871},
|
||||
{"hexdump: line too long.\n", 1872},
|
||||
{"hexdump: byte count with multiple conversion characters.\n", 1873},
|
||||
{"hexdump: bad byte count for conversion character %s.\n", 1874},
|
||||
{"hexdump: %%s requires a precision or a byte count.\n", 1875},
|
||||
{"hexdump: bad format {%s}\n", 1876},
|
||||
{"hexdump: bad conversion character %%%s.\n", 1877},
|
||||
{"\
|
||||
%s: Usage: %s [-number] [-p string] [-cefnrs] [+line] [+/pattern/] [files]\n", 1879},
|
||||
{"%s: option requires an argument -- %s\n", 1880},
|
||||
{"%s: illegal option -- %s\n", 1881},
|
||||
{"...skipping forward\n", 1882},
|
||||
{"...skipping backward\n", 1883},
|
||||
{"No next file", 1884},
|
||||
{"No previous file", 1885},
|
||||
{"%s: Read error from %s file\n", 1886},
|
||||
{"%s: Unexpected EOF in %s file\n", 1887},
|
||||
{"%s: Unknown error in %s file\n", 1888},
|
||||
{"%s: Cannot create tempfile\n", 1889},
|
||||
{"RE error: ", 1890},
|
||||
{"(EOF)", 1891},
|
||||
{"No remembered search string", 1892},
|
||||
{"Cannot open ", 1893},
|
||||
{"saved", 1894},
|
||||
{": !command not allowed in rflag mode.\n", 1895},
|
||||
{"fork() failed, try again later\n", 1896},
|
||||
{"(Next file: ", 1897},
|
||||
{"Unable to allocate bufferspace\n", 1898},
|
||||
{"usage: rev [file ...]\n", 1899},
|
||||
{"usage: %s [ -i ] [ -tTerm ] file...\n", 1900},
|
||||
{"trouble reading terminfo", 1901},
|
||||
{"Unknown escape sequence in input: %o, %o\n", 1902},
|
||||
{"Unable to allocate buffer.\n", 1903},
|
||||
{"Input line too long.\n", 1904},
|
||||
{"Out of memory when growing buffer.\n", 1905},
|
||||
%s: Usage: %s [-number] [-p string] [-cefnrs] [+line] [+/pattern/] [files]\n", 1878},
|
||||
{"%s: option requires an argument -- %s\n", 1879},
|
||||
{"%s: illegal option -- %s\n", 1880},
|
||||
{"...skipping forward\n", 1881},
|
||||
{"...skipping backward\n", 1882},
|
||||
{"No next file", 1883},
|
||||
{"No previous file", 1884},
|
||||
{"%s: Read error from %s file\n", 1885},
|
||||
{"%s: Unexpected EOF in %s file\n", 1886},
|
||||
{"%s: Unknown error in %s file\n", 1887},
|
||||
{"%s: Cannot create tempfile\n", 1888},
|
||||
{"RE error: ", 1889},
|
||||
{"(EOF)", 1890},
|
||||
{"No remembered search string", 1891},
|
||||
{"Cannot open ", 1892},
|
||||
{"saved", 1893},
|
||||
{": !command not allowed in rflag mode.\n", 1894},
|
||||
{"fork() failed, try again later\n", 1895},
|
||||
{"(Next file: ", 1896},
|
||||
{"Unable to allocate bufferspace\n", 1897},
|
||||
{"usage: rev [file ...]\n", 1898},
|
||||
{"usage: %s [ -i ] [ -tTerm ] file...\n", 1899},
|
||||
{"trouble reading terminfo", 1900},
|
||||
{"Unknown escape sequence in input: %o, %o\n", 1901},
|
||||
{"Unable to allocate buffer.\n", 1902},
|
||||
{"Input line too long.\n", 1903},
|
||||
{"Out of memory when growing buffer.\n", 1904},
|
||||
};
|
||||
|
||||
int _msg_tbl_length = 1905;
|
||||
int _msg_tbl_length = 1904;
|
||||
|
|
Loading…
Reference in New Issue