Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Fix getconf breakage
Signed-off-by: Carsten Munk <carsten.munk@jollamobile.com>
- Loading branch information
Carsten Munk
committed
Dec 17, 2013
1 parent
b456f88
commit 7a1f695
Showing
3 changed files
with
304 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,299 @@ | ||
diff --git a/libc/posix/confstr.c b/libc/posix/confstr.c | ||
index 3f79d45..b5b4185 100644 | ||
--- a/libc/posix/confstr.c | ||
+++ b/libc/posix/confstr.c | ||
@@ -34,10 +36,6 @@ confstr (name, buf, len) | ||
const char *string = ""; | ||
size_t string_len = 1; | ||
|
||
- /* Note that this buffer must be large enough for the longest strings | ||
- used below. */ | ||
- char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"]; | ||
- | ||
switch (name) | ||
{ | ||
case _CS_PATH: | ||
diff --git a/libc/posix/confstr.inc b/libc/posix/confstr.inc | ||
index 9f1a071..ee88304 100644 | ||
--- a/libc/posix/confstr.inc | ||
+++ b/libc/posix/confstr.inc | ||
@@ -28,55 +28,59 @@ | ||
wint_t types are no greater than the width of type long. | ||
|
||
Currently this means all environment which the system allows. */ | ||
- string_len = 0; | ||
+ { | ||
+ char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"]; | ||
+ | ||
+ string_len = 0; | ||
#ifndef _POSIX_V7_ILP32_OFF32 | ||
- if (__sysconf (_SC_V7_ILP32_OFF32) > 0) | ||
+ if (__sysconf (_SC_V7_ILP32_OFF32) > 0) | ||
#endif | ||
#if !defined _POSIX_V7_ILP32_OFF32 || _POSIX_V7_ILP32_OFF32 > 0 | ||
- { | ||
- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32", | ||
- sizeof "POSIX_V7_ILP32_OFF32" - 1); | ||
- string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1; | ||
- } | ||
+ { | ||
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32", | ||
+ sizeof "POSIX_V7_ILP32_OFF32" - 1); | ||
+ string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1; | ||
+ } | ||
#endif | ||
#ifndef _POSIX_V7_ILP32_OFFBIG | ||
- if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0) | ||
+ if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0) | ||
#endif | ||
#if !defined _POSIX_V7_ILP32_OFFBIG || _POSIX_V7_ILP32_OFFBIG > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG", | ||
- sizeof "POSIX_V7_ILP32_OFFBIG" - 1); | ||
- string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1; | ||
- } | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG", | ||
+ sizeof "POSIX_V7_ILP32_OFFBIG" - 1); | ||
+ string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1; | ||
+ } | ||
#endif | ||
#ifndef _POSIX_V7_LP64_OFF64 | ||
- if (__sysconf (_SC_V7_LP64_OFF64) > 0) | ||
+ if (__sysconf (_SC_V7_LP64_OFF64) > 0) | ||
#endif | ||
#if !defined _POSIX_V7_LP64_OFF64 || _POSIX_V7_LP64_OFF64 > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64", | ||
- sizeof "POSIX_V7_LP64_OFF64" - 1); | ||
- string_len += sizeof "POSIX_V7_LP64_OFF64" - 1; | ||
- } | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64", | ||
+ sizeof "POSIX_V7_LP64_OFF64" - 1); | ||
+ string_len += sizeof "POSIX_V7_LP64_OFF64" - 1; | ||
+ } | ||
#endif | ||
#ifndef _POSIX_V7_LPBIG_OFFBIG | ||
- if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0) | ||
+ if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0) | ||
#endif | ||
#if !defined _POSIX_V7_LPBIG_OFFBIG || _POSIX_V7_LPBIG_OFFBIG > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG", | ||
- sizeof "POSIX_V7_LPBIG_OFFBIG" - 1); | ||
- string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1; | ||
- } | ||
-#endif | ||
- restenvs[string_len++] = '\0'; | ||
- string = restenvs; | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG", | ||
+ sizeof "POSIX_V7_LPBIG_OFFBIG" - 1); | ||
+ string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1; | ||
+ } | ||
+#endif | ||
+ restenvs[string_len++] = '\0'; | ||
+ string = restenvs; | ||
+ } | ||
break; | ||
|
||
case _CS_V6_WIDTH_RESTRICTED_ENVS: | ||
@@ -87,55 +91,59 @@ | ||
wint_t types are no greater than the width of type long. | ||
|
||
Currently this means all environment which the system allows. */ | ||
- string_len = 0; | ||
+ { | ||
+ char restenvs[4 * sizeof "POSIX_V6_LPBIG_OFFBIG"]; | ||
+ | ||
+ string_len = 0; | ||
#ifndef _POSIX_V6_ILP32_OFF32 | ||
- if (__sysconf (_SC_V6_ILP32_OFF32) > 0) | ||
+ if (__sysconf (_SC_V6_ILP32_OFF32) > 0) | ||
#endif | ||
#if !defined _POSIX_V6_ILP32_OFF32 || _POSIX_V6_ILP32_OFF32 > 0 | ||
- { | ||
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32", | ||
- sizeof "POSIX_V6_ILP32_OFF32" - 1); | ||
- string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1; | ||
- } | ||
+ { | ||
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32", | ||
+ sizeof "POSIX_V6_ILP32_OFF32" - 1); | ||
+ string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1; | ||
+ } | ||
#endif | ||
#ifndef _POSIX_V6_ILP32_OFFBIG | ||
- if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0) | ||
+ if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0) | ||
#endif | ||
#if !defined _POSIX_V6_ILP32_OFFBIG || _POSIX_V6_ILP32_OFFBIG > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG", | ||
- sizeof "POSIX_V6_ILP32_OFFBIG" - 1); | ||
- string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1; | ||
- } | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG", | ||
+ sizeof "POSIX_V6_ILP32_OFFBIG" - 1); | ||
+ string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1; | ||
+ } | ||
#endif | ||
#ifndef _POSIX_V6_LP64_OFF64 | ||
- if (__sysconf (_SC_V6_LP64_OFF64) > 0) | ||
+ if (__sysconf (_SC_V6_LP64_OFF64) > 0) | ||
#endif | ||
#if !defined _POSIX_V6_LP64_OFF64 || _POSIX_V6_LP64_OFF64 > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64", | ||
- sizeof "POSIX_V6_LP64_OFF64" - 1); | ||
- string_len += sizeof "POSIX_V6_LP64_OFF64" - 1; | ||
- } | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64", | ||
+ sizeof "POSIX_V6_LP64_OFF64" - 1); | ||
+ string_len += sizeof "POSIX_V6_LP64_OFF64" - 1; | ||
+ } | ||
#endif | ||
#ifndef _POSIX_V6_LPBIG_OFFBIG | ||
- if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0) | ||
+ if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0) | ||
#endif | ||
#if !defined _POSIX_V6_LPBIG_OFFBIG || _POSIX_V6_LPBIG_OFFBIG > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG", | ||
- sizeof "POSIX_V6_LPBIG_OFFBIG" - 1); | ||
- string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1; | ||
- } | ||
-#endif | ||
- restenvs[string_len++] = '\0'; | ||
- string = restenvs; | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG", | ||
+ sizeof "POSIX_V6_LPBIG_OFFBIG" - 1); | ||
+ string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1; | ||
+ } | ||
+#endif | ||
+ restenvs[string_len++] = '\0'; | ||
+ string = restenvs; | ||
+ } | ||
break; | ||
|
||
case _CS_V5_WIDTH_RESTRICTED_ENVS: | ||
@@ -146,53 +154,57 @@ | ||
wint_t types are no greater than the width of type long. | ||
|
||
Currently this means all environment which the system allows. */ | ||
- string_len = 0; | ||
+ { | ||
+ char restenvs[4 * sizeof "XBS5_LPBIG_OFFBIG"]; | ||
+ | ||
+ string_len = 0; | ||
#ifndef _XBS5_ILP32_OFF32 | ||
- if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0) | ||
+ if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0) | ||
#endif | ||
#if !defined _XBS5_ILP32_OFF32 || _XBS5_ILP32_OFF32 > 0 | ||
- { | ||
- memcpy (restenvs + string_len, "XBS5_ILP32_OFF32", | ||
- sizeof "XBS5_ILP32_OFF32" - 1); | ||
- string_len += sizeof "XBS5_ILP32_OFF32" - 1; | ||
- } | ||
+ { | ||
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFF32", | ||
+ sizeof "XBS5_ILP32_OFF32" - 1); | ||
+ string_len += sizeof "XBS5_ILP32_OFF32" - 1; | ||
+ } | ||
#endif | ||
#ifndef _XBS5_ILP32_OFFBIG | ||
- if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0) | ||
+ if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0) | ||
#endif | ||
#if !defined _XBS5_ILP32_OFFBIG || _XBS5_ILP32_OFFBIG > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG", | ||
- sizeof "XBS5_ILP32_OFFBIG" - 1); | ||
- string_len += sizeof "XBS5_ILP32_OFFBIG" - 1; | ||
- } | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG", | ||
+ sizeof "XBS5_ILP32_OFFBIG" - 1); | ||
+ string_len += sizeof "XBS5_ILP32_OFFBIG" - 1; | ||
+ } | ||
#endif | ||
#ifndef _XBS5_LP64_OFF64 | ||
- if (__sysconf (_SC_XBS5_LP64_OFF64) > 0) | ||
+ if (__sysconf (_SC_XBS5_LP64_OFF64) > 0) | ||
#endif | ||
#if !defined _XBS5_LP64_OFF64 || _XBS5_LP64_OFF64 > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "XBS5_LP64_OFF64", | ||
- sizeof "XBS5_LP64_OFF64" - 1); | ||
- string_len += sizeof "XBS5_LP64_OFF64" - 1; | ||
- } | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "XBS5_LP64_OFF64", | ||
+ sizeof "XBS5_LP64_OFF64" - 1); | ||
+ string_len += sizeof "XBS5_LP64_OFF64" - 1; | ||
+ } | ||
#endif | ||
#ifndef _XBS5_LPBIG_OFFBIG | ||
- if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0) | ||
+ if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0) | ||
#endif | ||
#if !defined _XBS5_LPBIG_OFFBIG || _XBS5_LPBIG_OFFBIG > 0 | ||
- { | ||
- if (string_len) | ||
- restenvs[string_len++] = '\n'; | ||
- memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG", | ||
- sizeof "XBS5_LPBIG_OFFBIG" - 1); | ||
- string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1; | ||
- } | ||
-#endif | ||
- restenvs[string_len++] = '\0'; | ||
- string = restenvs; | ||
+ { | ||
+ if (string_len) | ||
+ restenvs[string_len++] = '\n'; | ||
+ memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG", | ||
+ sizeof "XBS5_LPBIG_OFFBIG" - 1); | ||
+ string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1; | ||
+ } | ||
+#endif | ||
+ restenvs[string_len++] = '\0'; | ||
+ string = restenvs; | ||
+ } | ||
break; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters