.
OBS-URL: https://build.opensuse.org/package/show/shells/ksh?expand=0&rev=178
This commit is contained in:
parent
02e034e580
commit
7aef8d0e7a
@ -2258,94 +2258,3 @@
|
||||
a=0$(vmstate --format='+%(size)u')
|
||||
for ((i=0; i < 500; i++))
|
||||
do print -r -- "$data"
|
||||
--- src/lib/libast/include/sfio_t.h
|
||||
+++ src/lib/libast/include/sfio_t.h 2013-10-11 09:22:41.000000000 +0000
|
||||
@@ -34,7 +34,7 @@
|
||||
#define _SFIO_PRIVATE \
|
||||
Sfoff_t extent; /* current file size */ \
|
||||
Sfoff_t here; /* current physical location */ \
|
||||
- unsigned char unused_1;/* unused #1 */ \
|
||||
+ unsigned char ngetr; /* sfgetr count */ \
|
||||
unsigned char tiny[1];/* for unbuffered read stream */ \
|
||||
unsigned short bits; /* private flags */ \
|
||||
unsigned int mode; /* current io mode */ \
|
||||
@@ -82,7 +82,7 @@
|
||||
(ssize_t)(-1), /* val */ \
|
||||
(Sfoff_t)0, /* extent */ \
|
||||
(Sfoff_t)0, /* here */ \
|
||||
- 0, /* getr */ \
|
||||
+ 0, /* ngetr */ \
|
||||
{0}, /* tiny */ \
|
||||
0, /* bits */ \
|
||||
(unsigned int)(((type)&(SF_RDWR))|SF_INIT), /* mode */ \
|
||||
@@ -93,7 +93,8 @@
|
||||
(mutex), /* mutex */ \
|
||||
(Void_t*)0, /* stdio */ \
|
||||
(Sfoff_t)0, /* lpos */ \
|
||||
- (size_t)0 /* iosz */ \
|
||||
+ (size_t)0, /* iosz */ \
|
||||
+ 0 /* getr */ \
|
||||
}
|
||||
|
||||
/* function to clear an Sfio_t structure */
|
||||
@@ -110,7 +111,7 @@
|
||||
(f)->val = (ssize_t)(-1), /* val */ \
|
||||
(f)->extent = (Sfoff_t)(-1), /* extent */ \
|
||||
(f)->here = (Sfoff_t)0, /* here */ \
|
||||
- (f)->getr = 0, /* getr */ \
|
||||
+ (f)->ngetr = 0, /* ngetr */ \
|
||||
(f)->tiny[0] = 0, /* tiny */ \
|
||||
(f)->bits = 0, /* bits */ \
|
||||
(f)->mode = 0, /* mode */ \
|
||||
@@ -121,7 +122,8 @@
|
||||
(f)->mutex = (mtx), /* mutex */ \
|
||||
(f)->stdio = (Void_t*)0, /* stdio */ \
|
||||
(f)->lpos = (Sfoff_t)0, /* lpos */ \
|
||||
- (f)->iosz = (size_t)0 /* iosz */ \
|
||||
+ (f)->iosz = (size_t)0, /* iosz */ \
|
||||
+ (f)->getr = 0 /* getr */ \
|
||||
)
|
||||
|
||||
/* expose next stream inside discipline function; state saved in int f */
|
||||
--- src/lib/libast/sfio/sfmode.c
|
||||
+++ src/lib/libast/sfio/sfmode.c 2013-10-11 09:26:43.000000000 +0000
|
||||
@@ -258,7 +258,7 @@ reg Sfio_t* f; /* stream to close */
|
||||
#endif
|
||||
{
|
||||
Sfproc_t* p;
|
||||
- int pid, status;
|
||||
+ int status;
|
||||
|
||||
if(!(p = f->proc))
|
||||
return -1;
|
||||
@@ -279,7 +279,7 @@ reg Sfio_t* f; /* stream to close */
|
||||
sigcritical(SIG_REG_EXEC|SIG_REG_PROC);
|
||||
#endif
|
||||
status = -1;
|
||||
- while ((pid = waitpid(p->pid,&status,0)) == -1 && errno == EINTR)
|
||||
+ while (waitpid(p->pid,&status,0) == -1 && errno == EINTR)
|
||||
;
|
||||
#if _PACKAGE_ast
|
||||
status = status == -1 ?
|
||||
@@ -405,12 +405,16 @@ reg int local; /* a local call */
|
||||
if(f->mode&SF_GETR)
|
||||
{ f->mode &= ~SF_GETR;
|
||||
#ifdef MAP_TYPE
|
||||
- if((f->bits&SF_MMAP) && (f->tiny[0] += 1) >= (4*SF_NMAP) )
|
||||
- { /* turn off mmap to avoid page faulting */
|
||||
- sfsetbuf(f,(Void_t*)f->tiny,(size_t)SF_UNBOUND);
|
||||
- f->tiny[0] = 0;
|
||||
+ if(f->bits&SF_MMAP)
|
||||
+ {
|
||||
+ if (!++f->ngetr)
|
||||
+ f->tiny[0]++;
|
||||
+ if(((f->tiny[0]<<8)|f->ngetr) >= (4*SF_NMAP) )
|
||||
+ { /* turn off mmap to avoid page faulting */
|
||||
+ sfsetbuf(f,(Void_t*)f->tiny,(size_t)SF_UNBOUND);
|
||||
+ f->ngetr = f->tiny[0] = 0;
|
||||
+ }
|
||||
}
|
||||
- else
|
||||
#endif
|
||||
if(f->getr)
|
||||
{ f->next[-1] = f->getr;
|
||||
|
@ -1,3 +1,52 @@
|
||||
--- src/lib/libast/include/sfio_t.h
|
||||
+++ src/lib/libast/include/sfio_t.h 2013-10-11 09:22:41.000000000 +0000
|
||||
@@ -34,7 +34,7 @@
|
||||
#define _SFIO_PRIVATE \
|
||||
Sfoff_t extent; /* current file size */ \
|
||||
Sfoff_t here; /* current physical location */ \
|
||||
- unsigned char unused_1;/* unused #1 */ \
|
||||
+ unsigned char ngetr; /* sfgetr count */ \
|
||||
unsigned char tiny[1];/* for unbuffered read stream */ \
|
||||
unsigned short bits; /* private flags */ \
|
||||
unsigned int mode; /* current io mode */ \
|
||||
@@ -82,7 +82,7 @@
|
||||
(ssize_t)(-1), /* val */ \
|
||||
(Sfoff_t)0, /* extent */ \
|
||||
(Sfoff_t)0, /* here */ \
|
||||
- 0, /* getr */ \
|
||||
+ 0, /* ngetr */ \
|
||||
{0}, /* tiny */ \
|
||||
0, /* bits */ \
|
||||
(unsigned int)(((type)&(SF_RDWR))|SF_INIT), /* mode */ \
|
||||
@@ -93,7 +93,8 @@
|
||||
(mutex), /* mutex */ \
|
||||
(Void_t*)0, /* stdio */ \
|
||||
(Sfoff_t)0, /* lpos */ \
|
||||
- (size_t)0 /* iosz */ \
|
||||
+ (size_t)0, /* iosz */ \
|
||||
+ 0 /* getr */ \
|
||||
}
|
||||
|
||||
/* function to clear an Sfio_t structure */
|
||||
@@ -110,7 +111,7 @@
|
||||
(f)->val = (ssize_t)(-1), /* val */ \
|
||||
(f)->extent = (Sfoff_t)(-1), /* extent */ \
|
||||
(f)->here = (Sfoff_t)0, /* here */ \
|
||||
- (f)->getr = 0, /* getr */ \
|
||||
+ (f)->ngetr = 0, /* ngetr */ \
|
||||
(f)->tiny[0] = 0, /* tiny */ \
|
||||
(f)->bits = 0, /* bits */ \
|
||||
(f)->mode = 0, /* mode */ \
|
||||
@@ -121,7 +122,8 @@
|
||||
(f)->mutex = (mtx), /* mutex */ \
|
||||
(f)->stdio = (Void_t*)0, /* stdio */ \
|
||||
(f)->lpos = (Sfoff_t)0, /* lpos */ \
|
||||
- (f)->iosz = (size_t)0 /* iosz */ \
|
||||
+ (f)->iosz = (size_t)0, /* iosz */ \
|
||||
+ (f)->getr = 0 /* getr */ \
|
||||
)
|
||||
|
||||
/* expose next stream inside discipline function; state saved in int f */
|
||||
--- src/lib/libast/sfio/sfflsbuf.c
|
||||
+++ src/lib/libast/sfio/sfflsbuf.c 2013-10-18 11:50:01.866235555 +0000
|
||||
@@ -96,7 +96,7 @@ int c; /* if c>=0, c is also written out
|
||||
@ -9,6 +58,48 @@
|
||||
written += w;
|
||||
f->next = f->data+n;
|
||||
if(c < 0 && (!isall || n == 0))
|
||||
--- src/lib/libast/sfio/sfmode.c
|
||||
+++ src/lib/libast/sfio/sfmode.c 2013-10-11 09:26:43.000000000 +0000
|
||||
@@ -258,7 +258,7 @@ reg Sfio_t* f; /* stream to close */
|
||||
#endif
|
||||
{
|
||||
Sfproc_t* p;
|
||||
- int pid, status;
|
||||
+ int status;
|
||||
|
||||
if(!(p = f->proc))
|
||||
return -1;
|
||||
@@ -279,7 +279,7 @@ reg Sfio_t* f; /* stream to close */
|
||||
sigcritical(SIG_REG_EXEC|SIG_REG_PROC);
|
||||
#endif
|
||||
status = -1;
|
||||
- while ((pid = waitpid(p->pid,&status,0)) == -1 && errno == EINTR)
|
||||
+ while (waitpid(p->pid,&status,0) == -1 && errno == EINTR)
|
||||
;
|
||||
#if _PACKAGE_ast
|
||||
status = status == -1 ?
|
||||
@@ -405,12 +405,16 @@ reg int local; /* a local call */
|
||||
if(f->mode&SF_GETR)
|
||||
{ f->mode &= ~SF_GETR;
|
||||
#ifdef MAP_TYPE
|
||||
- if((f->bits&SF_MMAP) && (f->tiny[0] += 1) >= (4*SF_NMAP) )
|
||||
- { /* turn off mmap to avoid page faulting */
|
||||
- sfsetbuf(f,(Void_t*)f->tiny,(size_t)SF_UNBOUND);
|
||||
- f->tiny[0] = 0;
|
||||
+ if(f->bits&SF_MMAP)
|
||||
+ {
|
||||
+ if (!++f->ngetr)
|
||||
+ f->tiny[0]++;
|
||||
+ if(((f->tiny[0]<<8)|f->ngetr) >= (4*SF_NMAP) )
|
||||
+ { /* turn off mmap to avoid page faulting */
|
||||
+ sfsetbuf(f,(Void_t*)f->tiny,(size_t)SF_UNBOUND);
|
||||
+ f->ngetr = f->tiny[0] = 0;
|
||||
+ }
|
||||
}
|
||||
- else
|
||||
#endif
|
||||
if(f->getr)
|
||||
{ f->next[-1] = f->getr;
|
||||
--- src/lib/libast/sfio/sfmove.c
|
||||
+++ src/lib/libast/sfio/sfmove.c 2013-10-18 12:04:03.194735625 +0000
|
||||
@@ -113,7 +113,11 @@ reg int rc; /* record separator */
|
||||
|
Loading…
x
Reference in New Issue
Block a user