aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog29
-rw-r--r--conform/data/fcntl.h-data4
-rw-r--r--conform/data/limits.h-data15
-rw-r--r--conform/data/mqueue.h-data6
-rw-r--r--conform/data/netdb.h-data5
-rw-r--r--conform/data/netinet/in.h-data4
-rw-r--r--conform/data/pthread.h-data4
-rw-r--r--conform/data/semaphore.h-data1
-rw-r--r--conform/data/signal.h-data2
-rw-r--r--conform/data/stdio.h-data4
-rw-r--r--conform/data/stdlib.h-data2
-rw-r--r--conform/data/string.h-data2
-rw-r--r--conform/data/time.h-data2
-rw-r--r--conform/data/unistd.h-data4
-rw-r--r--inet/netinet/in.h28
-rw-r--r--posix/regex.h121
-rw-r--r--resolv/netdb.h25
-rw-r--r--sysdeps/unix/sysv/linux/bits/in.h26
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h68
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/stat.h4
20 files changed, 256 insertions, 100 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d92318d5a..55ebe93e32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2008-01-16 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #5607]
+ * conform/data/fcntl.h-data: Fix posix_fadvise and posix_fallocate
+ prototypes.
+ * conform/data/limits.h-data: Adjust limits changed in v6 and add
+ additional suffixes.
+ * conform/data/mqueue.h-data: Fix typo in mq_curmsgs entry.
+ Add optional functions mq_timedreceive and mq_timedsend.
+ * conform/data/netdb.h-data: Add more AI_* and EAI_* constants.
+ * conform/data/pthread.h-data: Fix prototype of
+ pthread_condattr_setclock. pthread_sigmask is not required in v6.
+ * conform/data/semaphore.h-data: Allow time.h definitions.
+ * conform/data/signal.h-data: Likewise.
+ * conform/data/stdio.h-data: getw and putw are not required in v6.
+ * conform/data/stdlib.h-data: Change setstate prototype.
+ * conform/data/string.h-data: Fix strerror_r prototype.
+ * conform/data/time.h-data: Fix typo in TIMER_ABSTIME definition.
+ * conform/data/unistd.h-data: pthread_atfork not required in v6.
+ Fix readlink prototype.
+ * conform/data/netinet/in.h-data: Add const to in6addr_any and
+ in6addr_loopback.
+ * inet/netinet/in.h: Cleanup namespace.
+ * posix/regex.h: Likewise.
+ * resolv/netdb.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/in.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise.
+
2008-01-15 Ulrich Drepper <drepper@redhat.com>
* conform/data/fmtmsg.h-data: Add missing allows.
diff --git a/conform/data/fcntl.h-data b/conform/data/fcntl.h-data
index ba857c9ffa..c8caf0360f 100644
--- a/conform/data/fcntl.h-data
+++ b/conform/data/fcntl.h-data
@@ -87,8 +87,8 @@ function int creat (const char*, mode_t)
function int fcntl (int, int, ...)
function int open (const char*, int, ...)
#ifdef XOPEN2K
-function int posix_fadvise (int, off_t, size_t, int)
-function int posix_fallocate (int, off_t, size_t)
+function int posix_fadvise (int, off_t, off_t, int)
+function int posix_fallocate (int, off_t, off_t)
#endif
allow-header sys/stat.h
diff --git a/conform/data/limits.h-data b/conform/data/limits.h-data
index e4787486c8..9801ddeb86 100644
--- a/conform/data/limits.h-data
+++ b/conform/data/limits.h-data
@@ -57,7 +57,11 @@ constant _POSIX_CLOCKRES_MIN <= 20000000
optional-constant _POSIX_AIO_LISTIO_MAX 2
optional-constant _POSIX_AIO_MAX 1
optional-constant _POSIX_ARG_MAX 4096
+#ifdef XOPEN2K
+optional-constant _POSIX_CHILD_MAX 25
+#else
optional-constant _POSIX_CHILD_MAX 6
+#endif
optional-constant _POSIX_DELAYTIMER_MAX 32
optional-constant _POSIX_LINK_MAX 8
optional-constant _POSIX_LOGIN_NAME_MAX 9
@@ -66,8 +70,16 @@ optional-constant _POSIX_MAX_INPUT 255
optional-constant _POSIX_MQ_OPEN_MAX 8
optional-constant _POSIX_MQ_PRIO_MAX 32
optional-constant _POSIX_NAME_MAX 14
+#ifdef XOPEN2K
+optional-constant _POSIX_NGROUPS_MAX 8
+#else
optional-constant _POSIX_NGROUPS_MAX 0
+#endif
+#ifdef XOPEN2K
+optional-constant _POSIX_OPEN_MAX 20
+#else
optional-constant _POSIX_OPEN_MAX 16
+#endif
optional-constant _POSIX_PATH_MAX 256
optional-constant _POSIX_PIPE_BUF 512
optional-constant _POSIX2_RE_DUP_MAX 255
@@ -126,3 +138,6 @@ optional-constant NL_SETMAX >= 255
optional-constant NL_TEXTMAX
optional-constant NZERO >= 20
optional-constant TMP_MAX >= 10000
+
+allow *_MAX
+allow *_MIN
diff --git a/conform/data/mqueue.h-data b/conform/data/mqueue.h-data
index 1b410a77eb..6ec1e312d5 100644
--- a/conform/data/mqueue.h-data
+++ b/conform/data/mqueue.h-data
@@ -8,7 +8,7 @@ type {struct mq_attr}
element {struct mq_attr} long mq_flags
element {struct mq_attr} long mq_maxmsg
element {struct mq_attr} long mq_msgsize
-element {struct mq_attr} long mq_curmsg
+element {struct mq_attr} long mq_curmsgs
function int mq_close (mqd_t)
function int mq_getattr (mqd_t, struct mq_attr*)
@@ -18,6 +18,10 @@ function ssize_t mq_receive (mqd_t, char*, size_t, unsigned int*)
function int mq_send (mqd_t, const char*, size_t, unsigned int)
function int mq_setattr (mqd_t, const struct mq_attr*, struct mq_attr*)
function int mq_unlink (const char*)
+#ifdef XOPEN2K
+optional-function ssize_t mq_timedreceive (mqd_t, char*, size_t, unsigned int*, const struct timespec*)
+optional-function int mq_timedsend (mqd_t, const char*, size_t, unsigned int, const struct timespec*)
+#endif
allow-header fcntl.h
allow-header signal.h
diff --git a/conform/data/netdb.h-data b/conform/data/netdb.h-data
index d07846c636..483a3fcc96 100644
--- a/conform/data/netdb.h-data
+++ b/conform/data/netdb.h-data
@@ -55,6 +55,10 @@ element {struct addrinfo} {struct addrinfo*} ai_next
macro AI_PASSIVE
macro AI_CANONNAME
macro AI_NUMERICHOST
+macro AI_V4MAPPED
+macro AI_ALL
+macro AI_ADDRCONFIG
+macro AI_NUMERICSERV
macro NI_NOFQDN
macro NI_NUMERICHOST
@@ -71,6 +75,7 @@ macro EAI_NONAME
macro EAI_SERVICE
macro EAI_SOCKTYPE
macro EAI_SYSTEM
+macro EAI_OVERFLOW
function void endhostent (void)
function void endnetent (void)
diff --git a/conform/data/netinet/in.h-data b/conform/data/netinet/in.h-data
index 83e967bfee..391e1a551c 100644
--- a/conform/data/netinet/in.h-data
+++ b/conform/data/netinet/in.h-data
@@ -27,12 +27,12 @@ element {struct sockaddr_in6} uint32_t sin6_flowinfo
element {struct sockaddr_in6} {struct in6_addr} sin6_addr
element {struct sockaddr_in6} uint32_t sin6_scope_id
-variable {struct in6_addr} in6addr_any
+variable {const struct in6_addr} in6addr_any
// constant IN6ADDR_ANY_INIT
macro IN6ADDR_ANY_INIT
-variable {struct in6_addr} in6addr_loopback
+variable {const struct in6_addr} in6addr_loopback
// constant IN6ADDR_LOOPBACK_INIT
macro IN6ADDR_LOOPBACK_INIT
diff --git a/conform/data/pthread.h-data b/conform/data/pthread.h-data
index b37b4cde64..aa5861f1d8 100644
--- a/conform/data/pthread.h-data
+++ b/conform/data/pthread.h-data
@@ -84,7 +84,7 @@ function int pthread_condattr_destroy (pthread_condattr_t*)
optional-function int pthread_condattr_getclock (const pthread_condattr_t*, clockid_t*)
function int pthread_condattr_getpshared (const pthread_condattr_t*, int*)
function int pthread_condattr_init (pthread_condattr_t*)
-optional-function int pthread_condattr_setclock (const pthread_condattr_t*, clockid_t*)
+optional-function int pthread_condattr_setclock (pthread_condattr_t*, clockid_t)
function int pthread_condattr_setpshared (pthread_condattr_t*, int)
function int pthread_create (pthread_t*, const pthread_attr_t*, void *(*) (void*), void*)
function int pthread_detach (pthread_t)
@@ -140,7 +140,9 @@ function int pthread_setconcurrency (int)
# endif
function int pthread_setschedparam (pthread_t, int, const struct sched_param*)
function int pthread_setspecific (pthread_key_t, const void*)
+#ifndef XOPEN2K
function int pthread_sigmask (int, const sigset_t*, sigset_t*)
+#endif
function int pthread_spin_destroy (pthread_spinlock_t*)
function int pthread_spin_init (pthread_spinlock_t*, int)
function int pthread_spin_lock (pthread_spinlock_t*)
diff --git a/conform/data/semaphore.h-data b/conform/data/semaphore.h-data
index df29e0c01b..20fe0706b7 100644
--- a/conform/data/semaphore.h-data
+++ b/conform/data/semaphore.h-data
@@ -18,6 +18,7 @@ function int sem_wait (sem_t*)
allow-header fcntl.h
allow-header sys/types.h
# endif
+allow-header time.h
allow sem_*
allow SEM_*
diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data
index 635bdd85c8..95bd37299b 100644
--- a/conform/data/signal.h-data
+++ b/conform/data/signal.h-data
@@ -203,3 +203,5 @@ allow SS_*
allow SV_*
allow TRAP_*
allow *_t
+
+allow-header time.h
diff --git a/conform/data/stdio.h-data b/conform/data/stdio.h-data
index 4349f8eec2..c3f071e8f9 100644
--- a/conform/data/stdio.h-data
+++ b/conform/data/stdio.h-data
@@ -67,7 +67,9 @@ function int getchar_unlocked ()
function int getopt (int, char *const[], const char *)
#endif
function {char*} gets (char*)
+#ifndef XOPEN2K
function int getw (FILE*)
+#endif
function int pclose (FILE*)
function void perror (const char*)
function {FILE*} popen (const char*, const char*)
@@ -77,7 +79,9 @@ function int putchar (int)
function int putc_unlocked (int, FILE*)
function int putchar_unlocked (int)
function int puts (const char*)
+#ifndef XOPEN2K
function int putw (int, FILE*)
+#endif
function int remove (const char*)
function int rename (const char*, const char*)
function void rewind (FILE*)
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
index ccfdff637b..c639bb52d0 100644
--- a/conform/data/stdlib.h-data
+++ b/conform/data/stdlib.h-data
@@ -86,7 +86,7 @@ function {char*} realpath (const char*, char*)
function {unsigned short int*} seed48 (unsigned short int[3])
function int setenv (const char*, const char*, int)
function void setkey (const char*)
-function {char*} setstate (const char*)
+function {char*} setstate (char*)
function void srand (unsigned int)
function void srand48 (long int)
function void srandom (unsigned)
diff --git a/conform/data/string.h-data b/conform/data/string.h-data
index c3334fb066..19c06d292c 100644
--- a/conform/data/string.h-data
+++ b/conform/data/string.h-data
@@ -17,7 +17,7 @@ function size_t strcspn (const char*, const char*)
function {char*} strdup (const char*)
function {char*} strerror (int)
#ifdef XOPEN2K
-function {char*} strerror_r (int, char*, size_t)
+function int strerror_r (int, char*, size_t)
#endif
function size_t strlen (const char*)
function {char*} strncat (char*, const char*, size_t)
diff --git a/conform/data/time.h-data b/conform/data/time.h-data
index f503165fae..805c48dd6f 100644
--- a/conform/data/time.h-data
+++ b/conform/data/time.h-data
@@ -29,7 +29,7 @@ element {struct itimerspec} {struct timespec} it_interval
element {struct itimerspec} {struct timespec} it_value
constant CLOCK_REALTIME
-constant TIME_ABSTIME
+constant TIMER_ABSTIME
constant CLOCK_MONOTONIC
type clock_t
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
index 757d5c9905..b6effa064e 100644
--- a/conform/data/unistd.h-data
+++ b/conform/data/unistd.h-data
@@ -337,10 +337,12 @@ function {long int} pathconf (const char*, int)
function int pause (void)
function int pipe (int[2])
function ssize_t pread (int, void*, size_t, off_t)
+#ifndef XOPEN2K
function int pthread_atfork (void(*)(void), void(*)(void), void(*)(void))
+#endif
function ssize_t pwrite (int, const void*, size_t, off_t)
function ssize_t read (int, void*, size_t)
-function int readlink (const char*, char*, size_t)
+function ssize_t readlink (const char*, char*, size_t)
function int rmdir (const char*)
function {void*} sbrk (intptr_t)
function int setegid (gid_t)
diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index 136619831a..e3446a9994 100644
--- a/inet/netinet/in.h
+++ b/inet/netinet/in.h
@@ -195,13 +195,17 @@ struct in6_addr
{
union
{
- uint8_t u6_addr8[16];
- uint16_t u6_addr16[8];
- uint32_t u6_addr32[4];
- } in6_u;
-#define s6_addr in6_u.u6_addr8
-#define s6_addr16 in6_u.u6_addr16
-#define s6_addr32 in6_u.u6_addr32
+ uint8_t __u6_addr8[16];
+#if defined __USE_MISC || defined __USE_GNU
+ uint16_t __u6_addr16[8];
+ uint32_t __u6_addr32[4];
+#endif
+ } __in6_u;
+#define s6_addr __in6_u.__u6_addr8
+#if defined __USE_MISC || defined __USE_GNU
+# define s6_addr16 __in6_u.__u6_addr16
+# define s6_addr32 __in6_u.__u6_addr32
+#endif
};
extern const struct in6_addr in6addr_any; /* :: */
@@ -238,6 +242,7 @@ struct sockaddr_in6
};
+#if defined __USE_MISC || defined __USE_GNU
/* IPv4 multicast request. */
struct ip_mreq
{
@@ -259,6 +264,8 @@ struct ip_mreq_source
/* IP address of interface. */
struct in_addr imr_sourceaddr;
};
+#endif
+
/* Likewise, for IPv6. */
struct ipv6_mreq
@@ -271,6 +278,7 @@ struct ipv6_mreq
};
+#if defined __USE_MISC || defined __USE_GNU
/* Multicast group request. */
struct group_req
{
@@ -337,6 +345,7 @@ struct group_filter
- sizeof (struct sockaddr_storage) \
+ ((numsrc) \
* sizeof (struct sockaddr_storage)))
+#endif
/* Get system-specific definitions. */
@@ -422,12 +431,14 @@ extern uint16_t htons (uint16_t __hostshort)
&& (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \
&& (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
+#if defined __USE_MISC || defined __USE_GNU
/* Bind socket to a privileged IP port. */
extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW;
/* The IPv6 version of this function. */
extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
__THROW;
+#endif
#define IN6_IS_ADDR_MC_NODELOCAL(a) \
@@ -450,6 +461,8 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
(IN6_IS_ADDR_MULTICAST(a) \
&& ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
+
+#ifdef __USE_GNU
/* IPv6 packet information. */
struct in6_pktinfo
{
@@ -465,7 +478,6 @@ struct ip6_mtuinfo
};
-#ifdef __USE_GNU
/* Obsolete hop-by-hop and Destination Options Processing (RFC 2292). */
extern int inet6_option_space (int __nbytes)
__THROW __attribute_deprecated__;
diff --git a/posix/regex.h b/posix/regex.h
index 66f566e7b7..213277215c 100644
--- a/posix/regex.h
+++ b/posix/regex.h
@@ -1,6 +1,6 @@
/* Definitions for data structures and routines for the regular
expression library.
- Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006
+ Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006,2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -43,20 +43,21 @@ typedef unsigned long int active_reg_t;
add or remove a bit, only one other definition need change. */
typedef unsigned long int reg_syntax_t;
+#ifdef __USE_GNU
/* If this bit is not set, then \ inside a bracket expression is literal.
If set, then such a \ quotes the following character. */
-#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
+# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
/* If this bit is not set, then + and ? are operators, and \+ and \? are
literals.
If set, then \+ and \? are operators and + and ? are literals. */
-#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
+# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
/* If this bit is set, then character classes are supported. They are:
[:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
[:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
If not set, then character classes are not supported. */
-#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
+# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
/* If this bit is set, then ^ and $ are always anchors (outside bracket
expressions, of course).
@@ -70,7 +71,7 @@ typedef unsigned long int reg_syntax_t;
POSIX draft 11.2 says that * etc. in leading positions is undefined.
We already implemented a previous draft which made those constructs
invalid, though, so we haven't changed the code back. */
-#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
+# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
/* If this bit is set, then special characters are always special
regardless of where they are in the pattern.
@@ -78,71 +79,71 @@ typedef unsigned long int reg_syntax_t;
some contexts; otherwise they are ordinary. Specifically,
* + ? and intervals are only special when not after the beginning,
open-group, or alternation operator. */
-#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
+# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
/* If this bit is set, then *, +, ?, and { cannot be first in an re or
immediately after an alternation or begin-group operator. */
-#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
+# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
/* If this bit is set, then . matches newline.
If not set, then it doesn't. */
-#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
+# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
/* If this bit is set, then . doesn't match NUL.
If not set, then it does. */
-#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
+# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
/* If this bit is set, nonmatching lists [^...] do not match newline.
If not set, they do. */
-#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
+# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
/* If this bit is set, either \{...\} or {...} defines an
interval, depending on RE_NO_BK_BRACES.
If not set, \{, \}, {, and } are literals. */
-#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
+# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
/* If this bit is set, +, ? and | aren't recognized as operators.
If not set, they are. */
-#define RE_LIMITED_OPS (RE_INTERVALS << 1)
+# define RE_LIMITED_OPS (RE_INTERVALS << 1)
/* If this bit is set, newline is an alternation operator.
If not set, newline is literal. */
-#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
+# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
/* If this bit is set, then `{...}' defines an interval, and \{ and \}
are literals.
If not set, then `\{...\}' defines an interval. */
-#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
+# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
/* If this bit is set, (...) defines a group, and \( and \) are literals.
If not set, \(...\) defines a group, and ( and ) are literals. */
-#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
+# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
/* If this bit is set, then \<digit> matches <digit>.
If not set, then \<digit> is a back-reference. */
-#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
+# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
/* If this bit is set, then | is an alternation operator, and \| is literal.
If not set, then \| is an alternation operator, and | is literal. */
-#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
+# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
/* If this bit is set, then an ending range point collating higher
than the starting range point, as in [z-a], is invalid.
If not set, then when ending range point collates higher than the
starting range point, the range is ignored. */
-#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
+# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
/* If this bit is set, then an unmatched ) is ordinary.
If not set, then an unmatched ) is invalid. */
-#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
+# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
/* If this bit is set, succeed as soon as we match the whole pattern,
without further backtracking. */
-#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
+# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
/* If this bit is set, do not process the GNU regex operators.
If not set, then the GNU regex operators are recognized. */
-#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
+# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
/* If this bit is set, turn on internal