Update minix-port.patch
This commit is contained in:
parent
db0be09803
commit
49a93d54be
1 changed files with 9 additions and 243 deletions
|
@ -89,6 +89,15 @@ diff -ru nbsdsrc/src/lib/libc/Makefile lib/nbsd_libc/Makefile
|
|||
|
||||
|
||||
# workaround for I18N stuffs: build singlebyte setlocale() for libc.a,
|
||||
@@ -146,4 +171,8 @@
|
||||
|
||||
# force the dynamic linker to initialize libc first
|
||||
SHLIB_SHFLAGS+= -Wl,-z,initfirst
|
||||
+
|
||||
+.include <bsd.own.mk>
|
||||
+SUBDIR+= pkgconfig
|
||||
+.include <bsd.subdir.mk>
|
||||
|
||||
diff -ru nbsdsrc/src/lib/libc/Makefile.inc lib/nbsd_libc/Makefile.inc
|
||||
--- nbsdsrc/src/lib/libc/Makefile.inc
|
||||
+++ lib/nbsd_libc/Makefile.inc
|
||||
|
@ -356,24 +365,6 @@ diff -ru nbsdsrc/src/lib/libc/gdtoa/gdtoa_locks.c lib/nbsd_libc/gdtoa/gdtoa_lock
|
|||
+#ifdef _REENTRANT /* !__minix */
|
||||
mutex_t __gdtoa_locks[2] = { MUTEX_INITIALIZER, MUTEX_INITIALIZER };
|
||||
+#endif /* _REENTRANT */
|
||||
diff -ru nbsdsrc/src/lib/libc/gdtoa/gdtoaimp.h lib/nbsd_libc/gdtoa/gdtoaimp.h
|
||||
--- nbsdsrc/src/lib/libc/gdtoa/gdtoaimp.h
|
||||
+++ lib/nbsd_libc/gdtoa/gdtoaimp.h
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $NetBSD: gdtoaimp.h,v 1.7 2009/05/07 20:31:44 christos Exp $ */
|
||||
+/* $NetBSD: gdtoaimp.h,v 1.8 2011/01/21 23:36:49 christos Exp $ */
|
||||
|
||||
/****************************************************************
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
Exactly one of IEEE_LITTLE_ENDIAN, IEEE_BIG_ENDIAN, VAX, or IBM should be defined.
|
||||
#endif
|
||||
|
||||
-typedef union { double d; ULong L[2]; } U;
|
||||
+typedef union { double d; ULong L[2]; } __attribute__((__may_alias__)) U;
|
||||
|
||||
#ifdef YES_ALIAS
|
||||
#define dval(x) x
|
||||
diff -ru nbsdsrc/src/lib/libc/gen/Makefile.inc lib/nbsd_libc/gen/Makefile.inc
|
||||
--- nbsdsrc/src/lib/libc/gen/Makefile.inc
|
||||
+++ lib/nbsd_libc/gen/Makefile.inc
|
||||
|
@ -962,231 +953,6 @@ diff -ru nbsdsrc/src/lib/libc/gen/getpwent.c lib/nbsd_libc/gen/getpwent.c
|
|||
mutex_unlock(&_pwmutex);
|
||||
switch (r) {
|
||||
case NS_SUCCESS:
|
||||
diff -ru nbsdsrc/src/lib/libc/gen/glob.c lib/nbsd_libc/gen/glob.c
|
||||
--- nbsdsrc/src/lib/libc/gen/glob.c
|
||||
+++ lib/nbsd_libc/gen/glob.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* $NetBSD: glob.c,v 1.27 2010/09/06 14:40:25 christos Exp $ */
|
||||
+/* $NetBSD: glob.c,v 1.28 2011/01/21 23:30:31 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989, 1993
|
||||
@@ -37,7 +37,7 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)glob.c 8.3 (Berkeley) 10/13/93";
|
||||
#else
|
||||
-__RCSID("$NetBSD: glob.c,v 1.27 2010/09/06 14:40:25 christos Exp $");
|
||||
+__RCSID("$NetBSD: glob.c,v 1.28 2011/01/21 23:30:31 christos Exp $");
|
||||
#endif
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
@@ -87,13 +87,18 @@
|
||||
#define NO_GETPW_R
|
||||
#endif
|
||||
|
||||
-#define GLOB_LIMIT_MALLOC 65536
|
||||
-#define GLOB_LIMIT_STAT 128
|
||||
-#define GLOB_LIMIT_READDIR 16384
|
||||
+#define GLOB_LIMIT_STRING 65536 /* number of readdirs */
|
||||
+#define GLOB_LIMIT_STAT 128 /* number of stat system calls */
|
||||
+#define GLOB_LIMIT_READDIR 16384 /* total buffer size of path strings */
|
||||
+#define GLOB_LIMIT_PATH 1024 /* number of path elements */
|
||||
+#define GLOB_LIMIT_BRACE 128 /* Number of brace calls */
|
||||
|
||||
-#define GLOB_INDEX_MALLOC 0
|
||||
-#define GLOB_INDEX_STAT 1
|
||||
-#define GLOB_INDEX_READDIR 2
|
||||
+struct glob_limit {
|
||||
+ size_t l_string;
|
||||
+ size_t l_stat;
|
||||
+ size_t l_readdir;
|
||||
+ size_t l_brace;
|
||||
+};
|
||||
|
||||
/*
|
||||
* XXX: For NetBSD 1.4.x compatibility. (kill me l8r)
|
||||
@@ -158,17 +163,17 @@
|
||||
static DIR *g_opendir(Char *, glob_t *);
|
||||
static Char *g_strchr(const Char *, int);
|
||||
static int g_stat(Char *, __gl_stat_t *, glob_t *);
|
||||
-static int glob0(const Char *, glob_t *, size_t *);
|
||||
-static int glob1(Char *, glob_t *, size_t *);
|
||||
+static int glob0(const Char *, glob_t *, struct glob_limit *);
|
||||
+static int glob1(Char *, glob_t *, struct glob_limit *);
|
||||
static int glob2(Char *, Char *, Char *, const Char *, glob_t *,
|
||||
- size_t *);
|
||||
+ struct glob_limit *);
|
||||
static int glob3(Char *, Char *, Char *, const Char *, const Char *,
|
||||
- const Char *, glob_t *, size_t *);
|
||||
-static int globextend(const Char *, glob_t *, size_t *);
|
||||
+ const Char *, glob_t *, struct glob_limit *);
|
||||
+static int globextend(const Char *, glob_t *, struct glob_limit *);
|
||||
static const Char *globtilde(const Char *, Char *, size_t, glob_t *);
|
||||
-static int globexp1(const Char *, glob_t *, size_t *);
|
||||
+static int globexp1(const Char *, glob_t *, struct glob_limit *);
|
||||
static int globexp2(const Char *, const Char *, glob_t *, int *,
|
||||
- size_t *);
|
||||
+ struct glob_limit *);
|
||||
static int match(const Char *, const Char *, const Char *);
|
||||
#ifdef DEBUG
|
||||
static void qprintf(const char *, Char *);
|
||||
@@ -181,8 +186,7 @@
|
||||
const u_char *patnext;
|
||||
int c;
|
||||
Char *bufnext, *bufend, patbuf[MAXPATHLEN+1];
|
||||
- /* 0 = malloc(), 1 = stat(), 2 = readdir() */
|
||||
- size_t limit[] = { 0, 0, 0 };
|
||||
+ struct glob_limit limit = { 0, 0, 0, 0 };
|
||||
|
||||
_DIAGASSERT(pattern != NULL);
|
||||
|
||||
@@ -218,9 +222,9 @@
|
||||
*bufnext = EOS;
|
||||
|
||||
if (flags & GLOB_BRACE)
|
||||
- return globexp1(patbuf, pglob, limit);
|
||||
+ return globexp1(patbuf, pglob, &limit);
|
||||
else
|
||||
- return glob0(patbuf, pglob, limit);
|
||||
+ return glob0(patbuf, pglob, &limit);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -229,7 +233,7 @@
|
||||
* characters
|
||||
*/
|
||||
static int
|
||||
-globexp1(const Char *pattern, glob_t *pglob, size_t *limit)
|
||||
+globexp1(const Char *pattern, glob_t *pglob, struct glob_limit *limit)
|
||||
{
|
||||
const Char* ptr = pattern;
|
||||
int rv;
|
||||
@@ -237,6 +241,12 @@
|
||||
_DIAGASSERT(pattern != NULL);
|
||||
_DIAGASSERT(pglob != NULL);
|
||||
|
||||
+ if ((pglob->gl_flags & GLOB_LIMIT) &&
|
||||
+ limit->l_brace++ >= GLOB_LIMIT_BRACE) {
|
||||
+ errno = 0;
|
||||
+ return GLOB_NOSPACE;
|
||||
+ }
|
||||
+
|
||||
/* Protect a single {}, for find(1), like csh */
|
||||
if (pattern[0] == LBRACE && pattern[1] == RBRACE && pattern[2] == EOS)
|
||||
return glob0(pattern, pglob, limit);
|
||||
@@ -256,7 +266,7 @@
|
||||
*/
|
||||
static int
|
||||
globexp2(const Char *ptr, const Char *pattern, glob_t *pglob, int *rv,
|
||||
- size_t *limit)
|
||||
+ struct glob_limit *limit)
|
||||
{
|
||||
int i;
|
||||
Char *lm, *ls;
|
||||
@@ -461,7 +471,7 @@
|
||||
* to find no matches.
|
||||
*/
|
||||
static int
|
||||
-glob0(const Char *pattern, glob_t *pglob, size_t *limit)
|
||||
+glob0(const Char *pattern, glob_t *pglob, struct glob_limit *limit)
|
||||
{
|
||||
const Char *qpatnext;
|
||||
int c, error;
|
||||
@@ -570,7 +580,7 @@
|
||||
}
|
||||
|
||||
static int
|
||||
-glob1(Char *pattern, glob_t *pglob, size_t *limit)
|
||||
+glob1(Char *pattern, glob_t *pglob, struct glob_limit *limit)
|
||||
{
|
||||
Char pathbuf[MAXPATHLEN+1];
|
||||
|
||||
@@ -596,7 +606,7 @@
|
||||
*/
|
||||
static int
|
||||
glob2(Char *pathbuf, Char *pathend, Char *pathlim, const Char *pattern,
|
||||
- glob_t *pglob, size_t *limit)
|
||||
+ glob_t *pglob, struct glob_limit *limit)
|
||||
{
|
||||
__gl_stat_t sb;
|
||||
const Char *p;
|
||||
@@ -624,10 +634,11 @@
|
||||
return 0;
|
||||
|
||||
if ((pglob->gl_flags & GLOB_LIMIT) &&
|
||||
- limit[GLOB_INDEX_STAT]++ >= GLOB_LIMIT_STAT) {
|
||||
+ limit->l_stat++ >= GLOB_LIMIT_STAT) {
|
||||
errno = 0;
|
||||
*pathend++ = SEP;
|
||||
*pathend = EOS;
|
||||
+printf("stat limit\n");
|
||||
return GLOB_NOSPACE;
|
||||
}
|
||||
if (((pglob->gl_flags & GLOB_MARK) &&
|
||||
@@ -692,7 +703,7 @@
|
||||
static int
|
||||
glob3(Char *pathbuf, Char *pathend, Char *pathlim, const Char *pattern,
|
||||
const Char *restpattern, const Char *pglobstar, glob_t *pglob,
|
||||
- size_t *limit)
|
||||
+ struct glob_limit *limit)
|
||||
{
|
||||
struct dirent *dp;
|
||||
DIR *dirp;
|
||||
@@ -785,7 +796,7 @@
|
||||
Char *dc;
|
||||
|
||||
if ((pglob->gl_flags & GLOB_LIMIT) &&
|
||||
- limit[GLOB_INDEX_READDIR]++ >= GLOB_LIMIT_READDIR) {
|
||||
+ limit->l_readdir++ >= GLOB_LIMIT_READDIR) {
|
||||
errno = 0;
|
||||
*pathend++ = SEP;
|
||||
*pathend = EOS;
|
||||
@@ -894,7 +905,7 @@
|
||||
* gl_pathv points to (gl_offs + gl_pathc + 1) items.
|
||||
*/
|
||||
static int
|
||||
-globextend(const Char *path, glob_t *pglob, size_t *limit)
|
||||
+globextend(const Char *path, glob_t *pglob, struct glob_limit *limit)
|
||||
{
|
||||
char **pathv;
|
||||
size_t i, newsize, len;
|
||||
@@ -905,6 +916,9 @@
|
||||
_DIAGASSERT(pglob != NULL);
|
||||
|
||||
newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs);
|
||||
+ if ((pglob->gl_flags & GLOB_LIMIT) &&
|
||||
+ newsize > GLOB_LIMIT_PATH * sizeof(*pathv))
|
||||
+ goto nospace;
|
||||
pathv = pglob->gl_pathv ? realloc(pglob->gl_pathv, newsize) :
|
||||
malloc(newsize);
|
||||
if (pathv == NULL)
|
||||
@@ -921,7 +935,7 @@
|
||||
for (p = path; *p++;)
|
||||
continue;
|
||||
len = (size_t)(p - path);
|
||||
- limit[GLOB_INDEX_MALLOC] += len;
|
||||
+ limit->l_string += len;
|
||||
if ((copy = malloc(len)) != NULL) {
|
||||
if (g_Ctoc(path, copy, len)) {
|
||||
free(copy);
|
||||
@@ -932,12 +946,13 @@
|
||||
pathv[pglob->gl_offs + pglob->gl_pathc] = NULL;
|
||||
|
||||
if ((pglob->gl_flags & GLOB_LIMIT) &&
|
||||
- (newsize + limit[GLOB_INDEX_MALLOC]) >= GLOB_LIMIT_MALLOC) {
|
||||
- errno = 0;
|
||||
- return GLOB_NOSPACE;
|
||||
- }
|
||||
+ (newsize + limit->l_string) >= GLOB_LIMIT_STRING)
|
||||
+ goto nospace;
|
||||
|
||||
return copy == NULL ? GLOB_NOSPACE : 0;
|
||||
+nospace:
|
||||
+ errno = 0;
|
||||
+ return GLOB_NOSPACE;
|
||||
}
|
||||
|
||||
|
||||
diff -ru nbsdsrc/src/lib/libc/gen/gr_private.h lib/nbsd_libc/gen/gr_private.h
|
||||
--- nbsdsrc/src/lib/libc/gen/gr_private.h
|
||||
+++ lib/nbsd_libc/gen/gr_private.h
|
||||
|
|
Loading…
Reference in a new issue