Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 204079 Details for
Bug 284957
sys-libs/klibc-1.5.15: savedconfig and extra functionality
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
dev-libs/klibc/files/oe/dash_readopt.patch
dash_readopt.patch (text/plain), 2.38 KB, created by
Christopher Friedt
on 2009-09-14 16:39:14 UTC
(
hide
)
Description:
dev-libs/klibc/files/oe/dash_readopt.patch
Filename:
MIME Type:
Creator:
Christopher Friedt
Created:
2009-09-14 16:39:14 UTC
Size:
2.38 KB
patch
obsolete
>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)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 284957
:
204076
|
204078
|
204079
|
204080
|
204084
|
204086
|
204087
|
204089
|
204130
|
204289
|
204291