[oe-commits] org.oe.dev klibc, klibc-utils-static: add some read options to dash

thesing commit oe at amethyst.openembedded.net
Fri Apr 4 20:39:00 UTC 2008


klibc, klibc-utils-static: add some read options to dash

Author: thesing at openembedded.org
Branch: org.openembedded.dev
Revision: fcd1afad50b8cd806b06a49e3c34db85544ea088
ViewMTN: http://monotone.openembedded.org/revision/info/fcd1afad50b8cd806b06a49e3c34db85544ea088
Files:
1
packages/klibc/files/dash_readopt.patch
packages/klibc/klibc-common.inc
packages/klibc/klibc-utils-static_1.5.bb
packages/klibc/klibc_1.5.bb
Diffs:

#
# mt diff -re2e070bd3687d84d8c7897c67ef530276f7c443b -rfcd1afad50b8cd806b06a49e3c34db85544ea088
#
#
#
# add_file "packages/klibc/files/dash_readopt.patch"
#  content [2d3de90f28a29999a66550e5aaca8a8f3cfaf83a]
# 
# patch "packages/klibc/klibc-common.inc"
#  from [0b9a0adbd117c10f5bb84fbf3ee804a7373b5cd4]
#    to [f63bcd79d6bf261ecf2b188db14fc0d05f566d49]
# 
# patch "packages/klibc/klibc-utils-static_1.5.bb"
#  from [bb59cb03472acf16f6afda69a0226c56b3cc6069]
#    to [294377bb13d3cf5efd6994870abd0ab9791b2c7b]
# 
# patch "packages/klibc/klibc_1.5.bb"
#  from [54454c58faea62364d535ea1e36fb73b2e9f8115]
#    to [7a3e8ba7ef141381c3e8bc1f15829474bcd8e2d8]
#
============================================================
--- packages/klibc/files/dash_readopt.patch	2d3de90f28a29999a66550e5aaca8a8f3cfaf83a
+++ packages/klibc/files/dash_readopt.patch	2d3de90f28a29999a66550e5aaca8a8f3cfaf83a
@@ -0,0 +1,105 @@
+Index: klibc-1.5/usr/dash/miscbltin.c
+===================================================================
+--- klibc-1.5.orig/usr/dash/miscbltin.c	2008-03-27 20:38:09.354564817 +0100
++++ klibc-1.5/usr/dash/miscbltin.c	2008-04-04 18:05:32.063364195 +0200
+@@ -46,6 +46,7 @@
+ #include <ctype.h>
+ #include <stdint.h>
+ #include <time.h>		/* strtotimeval() */
++#include <termios.h>
+ 
+ #include "shell.h"
+ #include "options.h"
+@@ -83,6 +84,11 @@
+ 	int timeout;
+ 	int i;
+ 	fd_set set;
++	int n_flag = 0;
++	unsigned int nchars = 0;
++	int silent = 0;
++	struct termios tty, old_tty;
++
+ 	struct timeval ts, t0, t1, to;
+ 
+ 	ts.tv_sec = ts.tv_usec = 0;
+@@ -90,11 +96,18 @@
+ 	rflag = 0;
+ 	timeout = 0;
+ 	prompt = NULL;
+-	while ((i = nextopt("p:rt:")) != '\0') {
++	while ((i = nextopt("p:rt:n:s")) != '\0') {
+ 		switch(i) {
+ 		case 'p':
+ 			prompt = optionarg;
+ 			break;
++		case 'n':
++			nchars = strtoul(optionarg, NULL, 10);
++			n_flag = nchars; /* just a flag "nchars is nonzero" */
++			break;
++		case 's':
++			silent = 1;
++			break;
+ 		case 't':
+ 			p = strtotimeval(optionarg, &ts);
+ 			if (*p || (!ts.tv_sec && !ts.tv_usec))
+@@ -118,6 +131,23 @@
+ 		sh_error("arg count");
+ 	if ((ifs = bltinlookup("IFS")) == NULL)
+ 		ifs = defifs;
++	if (n_flag || silent) {
++		if (tcgetattr(0, &tty) != 0) {
++			/* Not a tty */
++			n_flag = 0;
++			silent = 0;
++		} else {
++			old_tty = tty;
++			if (n_flag) {
++				tty.c_lflag &= ~ICANON;
++				tty.c_cc[VMIN] = nchars < 256 ? nchars : 255;
++			}
++			if (silent) {
++				tty.c_lflag &= ~(ECHO | ECHOK | ECHONL);
++			}
++			tcsetattr(0, TCSANOW, &tty);
++		}
++	}
+ 	status = 0;
+ 	startword = 1;
+ 	backslash = 0;
+@@ -133,13 +163,15 @@
+ 		ts.tv_sec += t0.tv_sec;
+ 	}
+ 	STARTSTACKSTR(p);
+-	for (;;) {
++	do {
+ 		if (timeout) {
+ 			gettimeofday(&t1, NULL);
+ 			if (t1.tv_sec > ts.tv_sec ||
+ 			    (t1.tv_sec == ts.tv_sec &&
+ 			     t1.tv_usec >= ts.tv_usec)) {
+ 				status = 1;
++				if (n_flag)
++					tcsetattr(0, TCSANOW, &old_tty);
+ 				break;	/* Timeout! */
+ 			}
+ 
+@@ -156,6 +188,8 @@
+ 			FD_SET(0, &set);
+ 			if (select(1, &set, NULL, NULL, &to) != 1) {
+ 				status = 1;
++				if (n_flag)
++					tcsetattr(0, TCSANOW, &old_tty);
+ 				break; /* Timeout! */
+ 			}
+ 		}
+@@ -191,7 +225,9 @@
+ put:
+ 			STPUTC(c, p);
+ 		}
+-	}
++	} while (!n_flag || --nchars);
++	if (n_flag || silent)
++		tcsetattr(0, TCSANOW, &old_tty);
+ 	STACKSTRNUL(p);
+ 	/* Remove trailing blanks */
+ 	while ((char *)stackblock() <= --p && strchr(ifs, *p) != NULL)
============================================================
--- packages/klibc/klibc-common.inc	0b9a0adbd117c10f5bb84fbf3ee804a7373b5cd4
+++ packages/klibc/klibc-common.inc	f63bcd79d6bf261ecf2b188db14fc0d05f566d49
@@ -8,6 +8,7 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux
 	   file://fstype-sane-vfat-and-jffs2-for-1.5.patch;patch=1 \
 	   file://modprobe.patch;patch=1 \
 	   file://losetup.patch;patch=1 \
+	   file://dash_readopt.patch;patch=1 \
 	   "
 S = "${WORKDIR}/klibc-${PV}"
 PACKAGE_ARCH = "${MACHINE_ARCH}"
============================================================
--- packages/klibc/klibc-utils-static_1.5.bb	bb59cb03472acf16f6afda69a0226c56b3cc6069
+++ packages/klibc/klibc-utils-static_1.5.bb	294377bb13d3cf5efd6994870abd0ab9791b2c7b
@@ -1,6 +1,6 @@ require klibc-common.inc
 require klibc-common.inc
 
-PR = "r8"
+PR = "r9"
 
 # We only want the static utils. klibc build both. So we install only what we want.				
 do_install() {
============================================================
--- packages/klibc/klibc_1.5.bb	54454c58faea62364d535ea1e36fb73b2e9f8115
+++ packages/klibc/klibc_1.5.bb	7a3e8ba7ef141381c3e8bc1f15829474bcd8e2d8
@@ -1,2 +1,2 @@ require klibc.inc
 require klibc.inc
+PR = "r7"
-PR = "r6"






More information about the Openembedded-commits mailing list