From 76915bf738c4532c7ca57fc673b5a0ebd4b91af8 Mon Sep 17 00:00:00 2001 From: Aaro Koskinen Date: Sat, 19 Dec 2015 22:34:44 +0200 Subject: nandwrite: implement -n (read/write without ecc) Implement -n (read/write without ecc). Signed-off-by: Aaro Koskinen Signed-off-by: Denys Vlasenko --- miscutils/nandwrite.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'miscutils') diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c index 247fc72f4..c95cbb21e 100644 --- a/miscutils/nandwrite.c +++ b/miscutils/nandwrite.c @@ -29,16 +29,18 @@ //kbuild:lib-$(CONFIG_NANDDUMP) += nandwrite.o //usage:#define nandwrite_trivial_usage -//usage: "[-p] [-s ADDR] MTD_DEVICE [FILE]" +//usage: "[-np] [-s ADDR] MTD_DEVICE [FILE]" //usage:#define nandwrite_full_usage "\n\n" //usage: "Write to MTD_DEVICE\n" +//usage: "\n -n Write without ecc" //usage: "\n -p Pad to page size" //usage: "\n -s ADDR Start address" //usage:#define nanddump_trivial_usage -//usage: "[-o]" IF_LONG_OPTS(" [--bb=padbad|skipbad]") " [-s ADDR] [-l LEN] [-f FILE] MTD_DEVICE" +//usage: "[-no]" IF_LONG_OPTS(" [--bb=padbad|skipbad]") " [-s ADDR] [-l LEN] [-f FILE] MTD_DEVICE" //usage:#define nanddump_full_usage "\n\n" //usage: "Dump MTD_DEVICE\n" +//usage: "\n -n Read without ecc" //usage: "\n -o Dump oob data" //usage: "\n -s ADDR Start address" //usage: "\n -l LEN Length" @@ -57,10 +59,11 @@ #define OPT_p (1 << 0) /* nandwrite only */ #define OPT_o (1 << 0) /* nanddump only */ -#define OPT_s (1 << 1) -#define OPT_f (1 << 2) -#define OPT_l (1 << 3) -#define OPT_bb (1 << 4) /* must be the last one in the list */ +#define OPT_n (1 << 1) +#define OPT_s (1 << 2) +#define OPT_f (1 << 3) +#define OPT_l (1 << 4) +#define OPT_bb (1 << 5) /* must be the last one in the list */ #define BB_PADBAD (1 << 0) #define BB_SKIPBAD (1 << 1) @@ -125,10 +128,10 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv) applet_long_options = "bb\0" Required_argument "\xff"; /* no short equivalent */ #endif - opts = getopt32(argv, "os:f:l:", &opt_s, &opt_f, &opt_l, &opt_bb); + opts = getopt32(argv, "ons:f:l:", &opt_s, &opt_f, &opt_l, &opt_bb); } else { /* nandwrite */ opt_complementary = "-1:?2"; - opts = getopt32(argv, "ps:", &opt_s); + opts = getopt32(argv, "pns:", &opt_s); } argv += optind; @@ -144,6 +147,9 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv) fd = xopen(argv[0], IS_NANDWRITE ? O_RDWR : O_RDONLY); xioctl(fd, MEMGETINFO, &meminfo); + if (opts & OPT_n) + xioctl(fd, MTDFILEMODE, (void *)MTD_FILE_MODE_RAW); + mtdoffset = xstrtou(opt_s, 0); if (IS_NANDDUMP && (opts & OPT_l)) { unsigned length = xstrtou(opt_l, 0); -- cgit v1.2.3-55-g6feb From ccf7f0e4d3aed3bd9f46a239d9033cd773e67ab8 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 17 Jan 2016 01:09:36 +0100 Subject: setsid: implement -c function old new delta setsid_main 53 96 +43 packed_usage 30846 30833 -13 Signed-off-by: Denys Vlasenko --- miscutils/setsid.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'miscutils') diff --git a/miscutils/setsid.c b/miscutils/setsid.c index 637081b6c..1b27377b2 100644 --- a/miscutils/setsid.c +++ b/miscutils/setsid.c @@ -15,19 +15,22 @@ */ //usage:#define setsid_trivial_usage -//usage: "PROG ARGS" +//usage: "[-c] PROG ARGS" //usage:#define setsid_full_usage "\n\n" //usage: "Run PROG in a new session. PROG will have no controlling terminal\n" -//usage: "and will not be affected by keyboard signals (Ctrl-C etc).\n" -//usage: "See setsid(2) for details." +//usage: "and will not be affected by keyboard signals (^C etc).\n" +//usage: "\n -c Set controlling terminal to stdin" #include "libbb.h" int setsid_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int setsid_main(int argc UNUSED_PARAM, char **argv) { - if (!argv[1]) - bb_show_usage(); + unsigned opt; + + opt_complementary = "-1"; /* at least one arg */ + opt = getopt32(argv, "c"); + argv += optind; /* setsid() is allowed only when we are not a process group leader. * Otherwise our PID serves as PGID of some existing process group @@ -61,6 +64,10 @@ int setsid_main(int argc UNUSED_PARAM, char **argv) setsid(); } - argv++; + if (opt) { + /* -c: set (with stealing) controlling tty */ + ioctl(0, TIOCSCTTY, 1); + } + BB_EXECVP_or_die(argv); } -- cgit v1.2.3-55-g6feb