example.com
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

devel

Thread Start a new thread
Download
Threads by month
  • ----- 2025 -----
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
devel@uclibc-ng.org

  • 1 participants
  • 1173 discussions
uClibc-ng - small C library for embedded systems branch master updated. b7967026760157bbbfc4fb9db6862cd2085bb0d9
by wbx@helium.waldemar-brodkorb.de 29 Dec '14

29 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via b7967026760157bbbfc4fb9db6862cd2085bb0d9 (commit) from 5f7dc9b62575cfab781abda80602515ce42b43e8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b7967026760157bbbfc4fb9db6862cd2085bb0d9 Author: Waldemar Brodkorb <wbx(a)openadk.org> Date: Sun Dec 28 22:10:35 2014 -0600 revert getopt changes to tests The upstream changes are not complete and let the tests fail. Revert the changes for now, may be upstream will make a better fix later. ----------------------------------------------------------------------- Summary of changes: test/nptl/tst-cancel7.c | 7 ++----- test/nptl/tst-mqueue7.c | 5 +---- test/test-skeleton.c | 10 +--------- 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/test/nptl/tst-cancel7.c b/test/nptl/tst-cancel7.c index fe543f7..3bdfa9f 100644 --- a/test/nptl/tst-cancel7.c +++ b/test/nptl/tst-cancel7.c @@ -196,16 +196,13 @@ do_cleanup (void) #define OPT_COMMAND 10000 #define OPT_PIDFILE 10001 #define CMDLINE_OPTIONS \ - "c:p:" -/* { "command", required_argument, NULL, OPT_COMMAND }, \ { "pidfile", required_argument, NULL, OPT_PIDFILE }, -*/ #define CMDLINE_PROCESS \ - case 'c': \ + case OPT_COMMAND: \ command = optarg; \ break; \ - case 'p': \ + case OPT_PIDFILE: \ pidfile = optarg; \ break; // #define CLEANUP_HANDLER do_cleanup () diff --git a/test/nptl/tst-mqueue7.c b/test/nptl/tst-mqueue7.c index 01d7cd7..d1a6529 100644 --- a/test/nptl/tst-mqueue7.c +++ b/test/nptl/tst-mqueue7.c @@ -32,12 +32,9 @@ static mqd_t after_exec = (mqd_t) -1; #define CMDLINE_OPTIONS \ - "a:" -/* { "after-exec", required_argument, NULL, OPT_AFTEREXEC }, -*/ #define CMDLINE_PROCESS \ - case 'a': \ + case OPT_AFTEREXEC: \ after_exec = (mqd_t) strtoul (optarg, NULL, 0); \ break; diff --git a/test/test-skeleton.c b/test/test-skeleton.c index 69ef99f..cf7afea 100644 --- a/test/test-skeleton.c +++ b/test/test-skeleton.c @@ -18,6 +18,7 @@ <http://www.gnu.org/licenses/>. */ #include <errno.h> +#include <getopt.h> #include <malloc.h> #include <search.h> #include <signal.h> @@ -45,7 +46,6 @@ #define OPT_DIRECT 1000 #define OPT_TESTDIR 1001 -#if 0 /* Not used in uClibc */ static struct option options[] = { #ifdef CMDLINE_OPTIONS @@ -55,7 +55,6 @@ static struct option options[] = { "test-dir", required_argument, NULL, OPT_TESTDIR }, { NULL, 0, NULL, 0 } }; -#endif /* PID of the test itself. */ static pid_t pid; @@ -242,14 +241,7 @@ main (int argc, char *argv[]) setbuf (stdout, NULL); #endif -#if 0 /* Not used in uClibc */ while ((opt = getopt_long (argc, argv, "+", options, NULL)) != -1) -#else -# ifndef CMDLINE_OPTIONS -# define CMDLINE_OPTIONS "" -# endif - while ((opt = getopt (argc, argv, "+" CMDLINE_OPTIONS)) >= 0) -#endif switch (opt) { case '?': hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. 5f7dc9b62575cfab781abda80602515ce42b43e8
by wbx@helium.waldemar-brodkorb.de 28 Dec '14

28 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via 5f7dc9b62575cfab781abda80602515ce42b43e8 (commit) from 33b126af0e3036d554ef993acfe3f204066e2376 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5f7dc9b62575cfab781abda80602515ce42b43e8 Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org> Date: Sun Dec 28 21:33:35 2014 +0100 for mips64 with N32 ABI we need to use newfstatat Fixes compile errors with latest util-linux. ----------------------------------------------------------------------- Summary of changes: libc/sysdeps/linux/common/fstatat64.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libc/sysdeps/linux/common/fstatat64.c b/libc/sysdeps/linux/common/fstatat64.c index 015f57d..711521a 100644 --- a/libc/sysdeps/linux/common/fstatat64.c +++ b/libc/sysdeps/linux/common/fstatat64.c @@ -10,10 +10,18 @@ #include <bits/wordsize.h> #include <sys/syscall.h> +#if defined __mips__ +# include <sgidefs.h> +#endif + /* 64bit ports tend to favor newfstatat() */ #if __WORDSIZE == 64 && defined __NR_newfstatat # define __NR_fstatat64 __NR_newfstatat #endif +/* mips N32 ABI use newfstatat(), too */ +#if defined __mips__ && _MIPS_SIM == _ABIN32 +# define __NR_fstatat64 __NR_newfstatat +#endif #ifdef __NR_fstatat64 # include <sys/stat.h> hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. 33b126af0e3036d554ef993acfe3f204066e2376
by wbx@helium.waldemar-brodkorb.de 28 Dec '14

28 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via 33b126af0e3036d554ef993acfe3f204066e2376 (commit) from cfc523ea8d207ebfd3cf683120d34527b6d08cb6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 33b126af0e3036d554ef993acfe3f204066e2376 Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org> Date: Sun Dec 28 17:09:15 2014 +0100 relocation fixes From OpenWrt: https://dev.openwrt.org/browser/trunk/toolchain/uClibc/patches-0.9.33.2/613… ----------------------------------------------------------------------- Summary of changes: ldso/ldso/mips/elfinterp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ldso/ldso/mips/elfinterp.c b/ldso/ldso/mips/elfinterp.c index dfe37c5..6310c77 100644 --- a/ldso/ldso/mips/elfinterp.c +++ b/ldso/ldso/mips/elfinterp.c @@ -239,12 +239,12 @@ int _dl_parse_relocation_information(struct dyn_elf *xpnt, case R_MIPS_TLS_DTPMOD64: case R_MIPS_TLS_DTPMOD32: if (tls_tpnt) - *(ElfW(Word) *)reloc_addr = tls_tpnt->l_tls_modid; + *(ElfW(Addr) *)reloc_addr = tls_tpnt->l_tls_modid; break; case R_MIPS_TLS_DTPREL64: case R_MIPS_TLS_DTPREL32: - *(ElfW(Word) *)reloc_addr += + *(ElfW(Addr) *)reloc_addr += TLS_DTPREL_VALUE (symbol_addr); break; hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. cfc523ea8d207ebfd3cf683120d34527b6d08cb6
by wbx@helium.waldemar-brodkorb.de 28 Dec '14

28 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via cfc523ea8d207ebfd3cf683120d34527b6d08cb6 (commit) from e6faae7a3082a7a09626ce579da16d7b12fab2bf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit cfc523ea8d207ebfd3cf683120d34527b6d08cb6 Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org> Date: Sun Dec 28 17:02:28 2014 +0100 sparc64 support was removed recently Remove leftover code. ----------------------------------------------------------------------- Summary of changes: ldso/include/dl-syscall.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h index 675b93a..6a89dff 100644 --- a/ldso/include/dl-syscall.h +++ b/ldso/include/dl-syscall.h @@ -25,11 +25,7 @@ extern int _dl_errno; /* Pull in whatever this particular arch's kernel thinks the kernel version of * struct stat should look like. It turns out that each arch has a different * opinion on the subject, and different kernel revs use different names... */ -#if defined(__sparc_v9__) && (__WORDSIZE == 64) -#define kernel_stat64 stat -#else #define kernel_stat stat -#endif #include <bits/kernel_stat.h> #include <bits/kernel_types.h> hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. e6faae7a3082a7a09626ce579da16d7b12fab2bf
by wbx@helium.waldemar-brodkorb.de 26 Dec '14

26 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via e6faae7a3082a7a09626ce579da16d7b12fab2bf (commit) from da932d59161a2d833596be5443c81ff244d2db58 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e6faae7a3082a7a09626ce579da16d7b12fab2bf Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org> Date: Fri Dec 26 18:43:07 2014 +0100 don't optimize for special mips cpu When building optimized code for Lemote Yeelong system, a conflict occurs. Better use optimized flags in your buildsystem, not in uClibc-ng. ----------------------------------------------------------------------- Summary of changes: Rules.mak | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Rules.mak b/Rules.mak index 72e55f5..218eb1f 100644 --- a/Rules.mak +++ b/Rules.mak @@ -404,14 +404,6 @@ endif ifeq ($(TARGET_ARCH),mips) OPTIMIZATION+=-mno-split-addresses - CPU_CFLAGS-$(CONFIG_MIPS_ISA_1)+=-mips1 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_2)+=-mips2 -mtune=mips2 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_3)+=-mips3 -mtune=mips3 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_4)+=-mips4 -mtune=mips4 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32)+=-mips32 -mtune=mips32 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32R2)+=-march=mips32r2 -mtune=mips32r2 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64)+=-mips64 -mtune=mips32 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64R2)+=-mips64r2 -mtune=mips64r2 ifeq ($(strip $(ARCH_BIG_ENDIAN)),y) CPU_LDFLAGS-$(CONFIG_MIPS_N64_ABI)+=-Wl,-melf64btsmip CPU_LDFLAGS-$(CONFIG_MIPS_O32_ABI)+=-Wl,-melf32btsmip hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. da932d59161a2d833596be5443c81ff244d2db58
by wbx@helium.waldemar-brodkorb.de 25 Dec '14

25 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via da932d59161a2d833596be5443c81ff244d2db58 (commit) via 638a23483b40c5b606ee323e6612e7e454e5154b (commit) via bff3a664e6a2a367bf159c3089df1fe6f093bfb1 (commit) via f8e05f3850e51673522216f23533bf7146359dcd (commit) via 067637375658047d70c296606ae17ef0bc86499d (commit) via d6da534cbf05dc4d09221881afd49b275ca7cd29 (commit) via 926a698c5ac69b599014ce147cc814343f0aaa4f (commit) from 88842f7126daccf205204be05d3143c73fa0624d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit da932d59161a2d833596be5443c81ff244d2db58 Merge: 88842f7 638a234 Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org> Date: Thu Dec 25 22:48:20 2014 +0100 merge upstream changes ----------------------------------------------------------------------- Summary of changes: Makefile.in | 2 +- extra/Configs/Config.in | 28 +++++++++---------- extra/config/conf.c | 5 ++-- include/getopt.h | 2 +- libc/stdio/_fpmaxtostr.c | 13 ++++----- libc/sysdeps/linux/common/bits/getopt.h | 2 +- libc/unistd/Makefile.in | 14 +++++++--- libc/unistd/getopt.c | 2 ++ test/Rules.mak | 3 +++ test/misc/Makefile.in | 8 ++++++ test/misc/bug-glob2.c | 1 - test/misc/tst-inotify.c | 7 +++-- test/misc/tst-utmp.c | 45 +++++++++++++++++-------------- test/nptl/tst-cancel7.c | 7 +++-- test/nptl/tst-mqueue7.c | 6 +++-- test/pwd_grp/getgroups.c | 11 ++++---- test/stdlib/Makefile.in | 5 ++-- test/stdlib/test-mkostemp-O_CLOEXEC.c | 5 ++++ test/test-skeleton.c | 17 +++++++++++- 19 files changed, 116 insertions(+), 67 deletions(-) diff --git a/Makefile.in b/Makefile.in index 3b8e043..5d60dda 100644 --- a/Makefile.in +++ b/Makefile.in @@ -276,7 +276,7 @@ HEADERS_RM-$(UCLIBC_HAS_GETTEXT_AWARENESS) += libintl.h HEADERS_RM-$(UCLIBC_HAS_GLIBC_CUSTOM_PRINTF) += printf.h HEADERS_RM-$(UCLIBC_HAS_GLOB) += glob.h HEADERS_RM-$(UCLIBC_HAS_GNU_ERROR) += error.h -HEADERS_RM-$(UCLIBC_HAS_GNU_GETOPT)$(UCLIBC_HAS_GETOPT_LONG) += getopt.h +HEADERS_RM-$(UCLIBC_HAS_GETOPT_LONG) += getopt.h HEADERS_RM-$(UCLIBC_HAS_IPV6) += netinet/ip6.h netinet/icmp6.h HEADERS_RM-$(UCLIBC_HAS_BACKTRACE) += execinfo.h HEADERS_RM-$(UCLIBC_HAS_LOCALE) += iconv.h bits/uClibc_ctype.h diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in index 2dbd455..fab0ddc 100644 --- a/extra/Configs/Config.in +++ b/extra/Configs/Config.in @@ -1449,6 +1449,13 @@ config UCLIBC_HAS_STRING_ARCH_OPT These are small and fast, the only reason _not_ to say Y here is for debugging purposes. +config UCLIBC_HAS_STDIO_FUTEXES + bool "Use futexes for multithreaded I/O locking" + depends on UCLIBC_HAS_THREADS_NATIVE + help + If you want to compile uClibc to use futexes for low-level + I/O locking, answer Y. Otherwise, answer N. + config UCLIBC_HAS_CTYPE_TABLES bool "Use Table Versions Of 'ctype.h' Functions." default y @@ -1905,32 +1912,25 @@ config UCLIBC_HAS_GNU_GETOPT help Answer Y if you want to include full gnu getopt() instead of a (much smaller) SUSv3 compatible getopt(). + Note that getopt_long, getopt_long_only as well as getsubopt + are implemented on top of this choice. Most people will answer Y. -config UCLIBC_HAS_STDIO_FUTEXES - bool "Use futexes for multithreaded I/O locking" - depends on UCLIBC_HAS_THREADS_NATIVE - help - If you want to compile uClibc to use futexes for low-level - I/O locking, answer Y. Otherwise, answer N. - config UCLIBC_HAS_GETOPT_LONG - bool "Support getopt_long/getopt_long_only" - depends on !UCLIBC_HAS_GNU_GETOPT + bool "Support getopt_long/getopt_long_only (glibc-compat)" default y help - Answer Y if you want to include getopt_long[_only() used by many - apps, even busybox. + Answer Y if you want to include getopt_long[_only()] used by many + apps. Most people will answer Y. config UCLIBC_HAS_GNU_GETSUBOPT - bool "Support glibc getsubopt" + bool "Support getsubopt" default y help - Answer Y if you want to include glibc getsubopt() instead of a - smaller SUSv3 compatible getsubopt(). + Answer Y if you want to include getsubopt(). Most people will answer Y. endmenu diff --git a/extra/config/conf.c b/extra/config/conf.c index db09053..b24c1c3 100644 --- a/extra/config/conf.c +++ b/extra/config/conf.c @@ -10,7 +10,6 @@ #include <string.h> #include <time.h> #include <unistd.h> -#include <getopt.h> #include <sys/stat.h> #include <sys/time.h> #include <errno.h> @@ -447,7 +446,7 @@ static void check_conf(struct menu *menu) } #if 00 // || !defined __UCLIBC__ || \ - (defined UCLIBC_HAS_GETOPT_LONG || defined UCLIBC_HAS_GNU_GETOPT) + defined __UCLIBC_HAS_GETOPT_LONG__ static struct option long_opts[] = { {"oldaskconfig", no_argument, NULL, oldaskconfig}, {"oldconfig", no_argument, NULL, oldconfig}, @@ -526,7 +525,7 @@ int main(int ac, char **av) tty_stdio = isatty(0) && isatty(1) && isatty(2); #if 00// !defined __UCLIBC__ || \ - (defined UCLIBC_HAS_GETOPT_LONG || defined UCLIBC_HAS_GNU_GETOPT) + defined __UCLIBC_HAS_GETOPT_LONG__ while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) #else char *gch = "asonymArDSld"; diff --git a/include/getopt.h b/include/getopt.h index a682f9c..de9da26 100644 --- a/include/getopt.h +++ b/include/getopt.h @@ -1,4 +1,4 @@ -/* This file will not be installed if not using gnu getopt. */ +/* This file will not be installed if not using getopt_long. */ #include <bits/getopt.h> diff --git a/libc/stdio/_fpmaxtostr.c b/libc/stdio/_fpmaxtostr.c index f7ea792..3580584 100644 --- a/libc/stdio/_fpmaxtostr.c +++ b/libc/stdio/_fpmaxtostr.c @@ -45,11 +45,6 @@ */ #define isnan(x) ((x) != (x)) -/* Without seminumerical functions to examine the sign bit, this is - * about the best we can do to test for '-0'. - */ -#define zeroisnegative(x) ((1./(x)) < 0) - /*****************************************************************************/ /* Don't change anything that follows peroid!!! ;-) */ /*****************************************************************************/ @@ -262,7 +257,13 @@ ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info, if (x == 0) { /* Handle 0 now to avoid false positive. */ #ifdef __UCLIBC_HAVE_SIGNED_ZERO__ - if (zeroisnegative(x)) { /* Handle 'signed' zero. */ + union { + double x; + struct { + unsigned int l1, l2; + } i; + } u = {x}; + if (u.i.l1 ^ u.i.l2) { /* Handle 'signed' zero. */ *sign_str = '-'; } #endif /* __UCLIBC_HAVE_SIGNED_ZERO__ */ diff --git a/libc/sysdeps/linux/common/bits/getopt.h b/libc/sysdeps/linux/common/bits/getopt.h index a49f023..dababe0 100644 --- a/libc/sysdeps/linux/common/bits/getopt.h +++ b/libc/sysdeps/linux/common/bits/getopt.h @@ -126,7 +126,7 @@ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW; libc_hidden_proto(getopt) -#if defined __UCLIBC_HAS_GNU_GETOPT__ || defined __UCLIBC_HAS_GETOPT_LONG__ +#if defined __UCLIBC_HAS_GETOPT_LONG__ #ifndef __need_getopt extern int getopt_long (int ___argc, char *const *___argv, const char *__shortopts, diff --git a/libc/unistd/Makefile.in b/libc/unistd/Makefile.in index b15d60a..659008d 100644 --- a/libc/unistd/Makefile.in +++ b/libc/unistd/Makefile.in @@ -16,10 +16,16 @@ OMIT-$(ARCH_USE_MMU) += __exec_alloc.c OMIT-$(if $(UCLIBC_SUSV3_LEGACY),,y) += ualarm.c usleep.c #OMIT-$(UCLIBC_HAS_THREADS_NATIVE) += sleep.c -# XXX: GNU_GETOPT comes with getopt_long unconditionally, which is wrong -GO_LONG := $(if $(UCLIBC_HAS_GNU_GETOPT),getopt_long-simple.c) -OMIT-y += $(if $(UCLIBC_HAS_GNU_GETOPT),getopt-susv3.c $(GO_LONG),getopt.c) -OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),getsubopt-susv3.c,getsubopt.c) +ifeq ($(UCLIBC_HAS_GNU_GETOPT),y) +# GNU getopt family +OMIT-y += getopt-susv3.c getopt_long-simple.c getsubopt-susv3.c +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),,getsubopt.c) +else +# SuS getopt family +OMIT-y += getopt.c getsubopt.c +OMIT-y += $(if $(UCLIBC_HAS_GETOPT_LONG),,getopt_long-simple.c) +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),,getsubopt-susv3.c) +endif CSRC-y := $(filter-out $(OMIT-y),$(CSRC-y)) diff --git a/libc/unistd/getopt.c b/libc/unistd/getopt.c index 3944c7c..f63482b 100644 --- a/libc/unistd/getopt.c +++ b/libc/unistd/getopt.c @@ -1162,6 +1162,7 @@ getopt (int argc, char *const *argv, const char *optstring) } libc_hidden_def(getopt) +#if defined __UCLIBC_HAS_GETOPT_LONG__ int getopt_long (int argc, char *const *argv, const char *options, const struct option *long_options, int *opt_index) @@ -1180,5 +1181,6 @@ getopt_long_only (int argc, char *const *argv, const char *options, { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } +#endif /* __UCLIBC_HAS_GETOPT_LONG__ */ #endif /* Not ELIDE_CODE. */ diff --git a/test/Rules.mak b/test/Rules.mak index ed72db2..805a349 100644 --- a/test/Rules.mak +++ b/test/Rules.mak @@ -78,6 +78,9 @@ CFLAGS := -nostdinc -I$(top_builddir)$(LOCAL_INSTALL_PATH)/usr/include CFLAGS += $(XCOMMON_CFLAGS) $(KERNEL_INCLUDES) $(CC_INC) CFLAGS += $(OPTIMIZATION) $(CPU_CFLAGS) $(XWARNINGS) +$(eval $(call check-gcc-var,-Wno-missing-field-initializers)) +CFLAGS += $(CFLAG_-Wno-missing-field-initializers) + # Can't add $(OPTIMIZATION) here, it may be target-specific. # Just adding -Os for now. HOST_CFLAGS += $(XCOMMON_CFLAGS) -Os $(XWARNINGS) -std=gnu99 diff --git a/test/misc/Makefile.in b/test/misc/Makefile.in index 3dfe617..04b677f 100644 --- a/test/misc/Makefile.in +++ b/test/misc/Makefile.in @@ -13,6 +13,14 @@ TESTS_DISABLED += tst-statfs # assuming host has LFS on endif CFLAGS_dirent64 := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +ifeq ($(UCLIBC_LINUX_SPECIFIC),) +TESTS_DISABLED += tst-inotify +endif + +ifeq ($(UCLIBC_HAS_GLOB),) +TESTS_DISABLED += bug-glob2 +endif + DODIFF_dirent := 1 DODIFF_dirent64 := 1 DODIFF_tst-statfs := 1 diff --git a/test/misc/bug-glob2.c b/test/misc/bug-glob2.c index 98e3bf7..069891b 100644 --- a/test/misc/bug-glob2.c +++ b/test/misc/bug-glob2.c @@ -18,7 +18,6 @@ <http://www.gnu.org/licenses/>. */ #include <errno.h> -#include <error.h> #include <dirent.h> #include <glob.h> #include <stdlib.h> diff --git a/test/misc/tst-inotify.c b/test/misc/tst-inotify.c index 9d940f7..f9f6830 100644 --- a/test/misc/tst-inotify.c +++ b/test/misc/tst-inotify.c @@ -11,7 +11,6 @@ #include <string.h> #include <unistd.h> #include <errno.h> -#include <error.h> #include <inttypes.h> #include <sys/inotify.h> #include <sys/fcntl.h> @@ -39,7 +38,7 @@ do_test(void) /* nonblocking inotify should return immediately with no events */ ret = read(ifd, &e, sizeof(e)); if (ret != -1 || errno != EAGAIN) { - error(0, 0, "first read() returned %d", ret); + fprintf(stderr, "first read() returned %d\n", ret); result = 1; } @@ -49,12 +48,12 @@ do_test(void) /* now check whether our event was seen */ ret = read(ifd, &e, sizeof(e)); if (ret != sizeof(e)) { - error(0, 0, "second read() returned %d", ret); + fprintf(stderr, "second read() returned %d\n", ret); result = 1; } if (!(e.mask & IN_DELETE_SELF)) { - error(0, 0, "incorrect event mask: %" PRIx32, e.mask); + fprintf(stderr, "incorrect event mask: %" PRIx32 "\n", e.mask); result = 1; } diff --git a/test/misc/tst-utmp.c b/test/misc/tst-utmp.c index ca92cf2..08a6f8e 100644 --- a/test/misc/tst-utmp.c +++ b/test/misc/tst-utmp.c @@ -18,7 +18,6 @@ <http://www.gnu.org/licenses/>. */ #include <errno.h> -#include <error.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> @@ -69,8 +68,11 @@ do_prepare (int argc, char *argv[]) /* Open our test file. */ fd = mkstemp (name); - if (fd == -1) - error (EXIT_FAILURE, errno, "cannot open test file `%s'", name); + if (fd == -1) { + fprintf (stderr, "cannot open test file `%s': ", name); + perror (NULL); + exit (EXIT_FAILURE); + } } struct utmp entry[] = @@ -110,7 +112,7 @@ do_init (void) { if (pututline (&entry[n]) == NULL) { - error (0, errno, "cannot write UTMP entry"); + perror ("cannot write UTMP entry"); return 1; } } @@ -135,7 +137,7 @@ do_check (void) if (n < num_entries && memcmp (ut, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -144,7 +146,7 @@ do_check (void) if (n != num_entries) { - error (0, 0, "number of UTMP entries is incorrect"); + fprintf (stderr, "number of UTMP entries is incorrect\n"); return 1; } @@ -176,7 +178,7 @@ simulate_login (const char *line, const char *user) if (pututline (&entry[n]) == NULL) { - error (0, errno, "cannot write UTMP entry"); + perror ("cannot write UTMP entry"); return 1; } @@ -186,7 +188,7 @@ simulate_login (const char *line, const char *user) } } - error (0, 0, "no entries available"); + fprintf (stderr, "no entries available\n"); return 1; } @@ -210,7 +212,7 @@ simulate_logout (const char *line) if (pututline (&entry[n]) == NULL) { - error (0, errno, "cannot write UTMP entry"); + perror ("cannot write UTMP entry"); return 1; } @@ -220,7 +222,7 @@ simulate_logout (const char *line) } } - error (0, 0, "no entry found for `%s'", line); + fprintf (stderr, "no entry found for `%s'\n", line); return 1; } @@ -237,7 +239,8 @@ check_login (const char *line) up = getutline (&ut); if (up == NULL) { - error (0, errno, "cannot get entry for line `%s'", line); + fprintf (stderr, "cannot get entry for line `%s': ", line); + perror(NULL); return 1; } @@ -249,7 +252,7 @@ check_login (const char *line) { if (memcmp (up, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -257,7 +260,7 @@ check_login (const char *line) } } - error (0, 0, "bogus entry for line `%s'", line); + fprintf (stderr, "bogus entry for line `%s'\n", line); return 1; } @@ -271,7 +274,7 @@ check_logout (const char *line) strcpy (ut.ut_line, line); if (getutline (&ut) != NULL) { - error (0, 0, "bogus login entry for `%s'", line); + fprintf (stderr, "bogus login entry for `%s'\n", line); return 1; } @@ -294,7 +297,8 @@ check_id (const char *id) up = getutid (&ut); if (up == NULL) { - error (0, errno, "cannot get entry for ID `%s'", id); + fprintf (stderr, "cannot get entry for ID `%s': ", id); + perror (NULL); return 1; } @@ -306,7 +310,7 @@ check_id (const char *id) { if (memcmp (up, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -314,7 +318,7 @@ check_id (const char *id) } } - error (0, 0, "bogus entry for ID `%s'", id); + fprintf (stderr, "bogus entry for ID `%s'\n", id); return 1; } @@ -331,7 +335,8 @@ check_type (int type) up = getutid (&ut); if (up == NULL) { - error (0, errno, "cannot get entry for type `%d'", type); + fprintf (stderr, "cannot get entry for type `%d': ", type); + perror (NULL); return 1; } @@ -343,7 +348,7 @@ check_type (int type) { if (memcmp (up, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -351,7 +356,7 @@ check_type (int type) } } - error (0, 0, "bogus entry for type `%d'", type); + fprintf (stderr, "bogus entry for type `%d'\n", type); return 1; } diff --git a/test/nptl/tst-cancel7.c b/test/nptl/tst-cancel7.c index 3bdfa9f..fe543f7 100644 --- a/test/nptl/tst-cancel7.c +++ b/test/nptl/tst-cancel7.c @@ -196,13 +196,16 @@ do_cleanup (void) #define OPT_COMMAND 10000 #define OPT_PIDFILE 10001 #define CMDLINE_OPTIONS \ + "c:p:" +/* { "command", required_argument, NULL, OPT_COMMAND }, \ { "pidfile", required_argument, NULL, OPT_PIDFILE }, +*/ #define CMDLINE_PROCESS \ - case OPT_COMMAND: \ + case 'c': \ command = optarg; \ break; \ - case OPT_PIDFILE: \ + case 'p': \ pidfile = optarg; \ break; // #define CLEANUP_HANDLER do_cleanup () diff --git a/test/nptl/tst-mqueue7.c b/test/nptl/tst-mqueue7.c index e8d53ad..01d7cd7 100644 --- a/test/nptl/tst-mqueue7.c +++ b/test/nptl/tst-mqueue7.c @@ -32,10 +32,12 @@ static mqd_t after_exec = (mqd_t) -1; #define CMDLINE_OPTIONS \ + "a:" +/* { "after-exec", required_argument, NULL, OPT_AFTEREXEC }, - +*/ #define CMDLINE_PROCESS \ - case OPT_AFTEREXEC: \ + case 'a': \ after_exec = (mqd_t) strtoul (optarg, NULL, 0); \ break; diff --git a/test/pwd_grp/getgroups.c b/test/pwd_grp/getgroups.c index 5769b18..c343552 100644 --- a/test/pwd_grp/getgroups.c +++ b/test/pwd_grp/getgroups.c @@ -13,7 +13,6 @@ #include <sys/types.h> #include <pwd.h> #include <grp.h> -#include <err.h> /* The number of errors encountered so far. */ static int problems = 0; @@ -25,7 +24,7 @@ static void print_group(gid_t gid) grp = getgrgid(gid); if (grp == NULL) { - warn("cannot find name for group ID %u", gid); + fprintf(stderr, "cannot find name for group ID %u\n", gid); problems++; } @@ -46,12 +45,14 @@ static int xgetgroups(gid_t gid, int *n_groups, gid_t ** groups) /* Add 1 just in case max_n_groups is zero. */ g = (gid_t *) malloc(max_n_groups * sizeof(gid_t) + 1); - if (g == NULL) - err(EXIT_FAILURE, "out of memory"); + if (g == NULL) { + fprintf(stderr, "out of memory\n"); + exit(EXIT_FAILURE); + } ng = getgroups(max_n_groups, g); if (ng < 0) { - warn("cannot get supplemental group list"); + fprintf(stderr, "cannot get supplemental group list\n"); ++fail; free(g); } diff --git a/test/stdlib/Makefile.in b/test/stdlib/Makefile.in index b0c724a..135db6b 100644 --- a/test/stdlib/Makefile.in +++ b/test/stdlib/Makefile.in @@ -6,6 +6,7 @@ DODIFF_testatexit := 1 DODIFF_teston_exit := 1 DODIFF_teststrtol := 1 -ifeq ($(ARCH_USE_MMU),) -TESTS_DISABLED := test-mkostemp-O_CLOEXEC +TESTS_DISABLED := +ifeq ($(UCLIBC_HAS_PTY),) +TESTS_DISABLED += ptytest endif diff --git a/test/stdlib/test-mkostemp-O_CLOEXEC.c b/test/stdlib/test-mkostemp-O_CLOEXEC.c index 5652086..9ff229a 100644 --- a/test/stdlib/test-mkostemp-O_CLOEXEC.c +++ b/test/stdlib/test-mkostemp-O_CLOEXEC.c @@ -1,3 +1,4 @@ +#define _XOPEN_SOURCE_EXTENDED #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -8,6 +9,10 @@ #include <sys/wait.h> #include <errno.h> +#if !defined __ARCH_USE_MMU__ +# define fork vfork +#endif + int main(int argc, char *argv[]) { int fd, status; char buff[5]; diff --git a/test/test-skeleton.c b/test/test-skeleton.c index 6d4a8b6..69ef99f 100644 --- a/test/test-skeleton.c +++ b/test/test-skeleton.c @@ -18,7 +18,6 @@ <http://www.gnu.org/licenses/>. */ #include <errno.h> -#include <getopt.h> #include <malloc.h> #include <search.h> #include <signal.h> @@ -46,6 +45,7 @@ #define OPT_DIRECT 1000 #define OPT_TESTDIR 1001 +#if 0 /* Not used in uClibc */ static struct option options[] = { #ifdef CMDLINE_OPTIONS @@ -55,6 +55,7 @@ static struct option options[] = { "test-dir", required_argument, NULL, OPT_TESTDIR }, { NULL, 0, NULL, 0 } }; +#endif /* PID of the test itself. */ static pid_t pid; @@ -144,7 +145,9 @@ signal_handler (int sig __attribute__ ((unused))) /* Wait for it to terminate. */ for (i = 0; i < 5; ++i) { +#ifdef __UCLIBC_HAS_REALTIME__ struct timespec ts; +#endif killed = waitpid (pid, &status, WNOHANG|WUNTRACED); if (killed != 0) break; @@ -153,9 +156,14 @@ signal_handler (int sig __attribute__ ((unused))) nanosleep() call return prematurely, all the better. We won't restart it since this probably means the child process finally died. */ +#ifdef __UCLIBC_HAS_REALTIME__ ts.tv_sec = 0; ts.tv_nsec = 100000000; nanosleep (&ts, NULL); +#else + /* No nanosleep, just sleep 1s instead of 0.1s */ + sleep(1); +#endif } if (killed != 0 && killed != pid) { @@ -234,7 +242,14 @@ main (int argc, char *argv[]) setbuf (stdout, NULL); #endif +#if 0 /* Not used in uClibc */ while ((opt = getopt_long (argc, argv, "+", options, NULL)) != -1) +#else +# ifndef CMDLINE_OPTIONS +# define CMDLINE_OPTIONS "" +# endif + while ((opt = getopt (argc, argv, "+" CMDLINE_OPTIONS)) >= 0) +#endif switch (opt) { case '?': hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. 88842f7126daccf205204be05d3143c73fa0624d
by wbx@helium.waldemar-brodkorb.de 25 Dec '14

25 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via 88842f7126daccf205204be05d3143c73fa0624d (commit) from 37515213e9c7070ffa048ad1abf76802373af496 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 88842f7126daccf205204be05d3143c73fa0624d Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org> Date: Thu Dec 25 07:28:36 2014 +0100 sync tcp header with glibc Nginx tries to find TCP_FASTOPEN, which is missing here. ----------------------------------------------------------------------- Summary of changes: include/netinet/tcp.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h index 06e8414..04032bb 100644 --- a/include/netinet/tcp.h +++ b/include/netinet/tcp.h @@ -51,6 +51,16 @@ #define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */ #define TCP_CONGESTION 13 /* Congestion control algorithm. */ #define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */ +#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */ +#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/ +#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */ +#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */ +#define TCP_REPAIR 19 /* TCP sock is under repair right now */ +#define TCP_REPAIR_QUEUE 20 /* Set TCP queue to repair */ +#define TCP_QUEUE_SEQ 21 /* Set sequence number of repaired queue. */ +#define TCP_REPAIR_OPTIONS 22 /* Repair TCP connection options */ +#define TCP_FASTOPEN 23 /* Enable FastOpen on listeners */ +#define TCP_TIMESTAMP 24 /* TCP time stamp */ #ifdef __USE_MISC # include <sys/types.h> hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch upstream updated. 638a23483b40c5b606ee323e6612e7e454e5154b
by wbx@helium.waldemar-brodkorb.de 18 Dec '14

18 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, upstream has been updated via 638a23483b40c5b606ee323e6612e7e454e5154b (commit) via bff3a664e6a2a367bf159c3089df1fe6f093bfb1 (commit) via f8e05f3850e51673522216f23533bf7146359dcd (commit) via 067637375658047d70c296606ae17ef0bc86499d (commit) via d6da534cbf05dc4d09221881afd49b275ca7cd29 (commit) via 926a698c5ac69b599014ce147cc814343f0aaa4f (commit) from ffc0bd03c4c41725ed2eee2fdea296eb42d26496 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 638a23483b40c5b606ee323e6612e7e454e5154b Author: Anthony G. Basile <blueness(a)gentoo.org> Date: Mon Oct 27 16:13:34 2014 -0400 mkostemp: fix implementation mkostemp(char *template, int flags) generates a unique temporary filename from a template. The flags parameter accepts three of the same flags as open(2): O_APPEND, O_CLOEXEC, and O_SYNC. The current implementation of mkostemp(3) does not respect the flags and in fact confuses the flags with the file mode which should always be S_IRUSR | S_IWUSR. This patch corrects this issue. Signed-off-by: Anthony G. Basile <blueness(a)gentoo.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> commit bff3a664e6a2a367bf159c3089df1fe6f093bfb1 Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> Date: Mon Dec 15 17:32:57 2014 +0100 test: Some more tests under conditionals Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> commit f8e05f3850e51673522216f23533bf7146359dcd Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> Date: Mon Dec 15 16:13:01 2014 +0100 stdio: Fix printing 0.0 We were relying on FE_DIVBYZERO being turned off when printing "%f", +-.0 Avoid the whole issue by looking at the sign-bit (in a rough approximation). Note that we do not handle gracefully: printf ("\n%llf\n", -0.0); printf ("\n%llf\n", 0.0); nor %Lf for both when NOT cast to long double. Avoiding an FPE due to broken numbers like these does not make sense to me. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> commit 067637375658047d70c296606ae17ef0bc86499d Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> Date: Fri Dec 12 16:18:12 2014 +0100 unistd: allow to turn off getopt_long The GNU variant of getopt() previously had no way to turn off getopt_long() support. commit d6da534cbf05dc4d09221881afd49b275ca7cd29 Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> Date: Fri Dec 12 16:06:17 2014 +0100 test: disable ptytest unless HAS_PTY Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> commit 926a698c5ac69b599014ce147cc814343f0aaa4f Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> Date: Fri Dec 12 14:43:55 2014 +0100 config: move STDIO_FUTEXES up a bit Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com> ----------------------------------------------------------------------- Summary of changes: Makefile.in | 2 +- extra/Configs/Config.in | 28 +++++++++---------- extra/config/conf.c | 5 ++-- include/getopt.h | 2 +- libc/inet/getaddrinfo.c | 2 +- libc/misc/internals/tempname.c | 6 ++--- libc/misc/internals/tempname.h | 2 +- libc/stdio/_fpmaxtostr.c | 13 ++++----- libc/stdio/tempnam.c | 2 +- libc/stdio/tmpfile.c | 2 +- libc/stdio/tmpnam.c | 2 +- libc/stdio/tmpnam_r.c | 2 +- libc/stdlib/mkdtemp.c | 2 +- libc/stdlib/mkostemp.c | 4 ++- libc/stdlib/mkostemp64.c | 2 +- libc/stdlib/mkstemp.c | 2 +- libc/stdlib/mkstemp64.c | 2 +- libc/stdlib/mktemp.c | 2 +- libc/sysdeps/linux/common/bits/getopt.h | 2 +- libc/unistd/Makefile.in | 14 +++++++--- libc/unistd/getopt.c | 2 ++ libpthread/nptl/sem_open.c | 2 +- test/.gitignore | 2 ++ test/Rules.mak | 3 +++ test/misc/Makefile.in | 8 ++++++ test/misc/bug-glob2.c | 1 - test/misc/tst-inotify.c | 7 +++-- test/misc/tst-utmp.c | 45 +++++++++++++++++-------------- test/nptl/tst-cancel7.c | 7 +++-- test/nptl/tst-mqueue7.c | 6 +++-- test/pwd_grp/getgroups.c | 11 ++++---- test/stdlib/Makefile.in | 6 +++++ test/stdlib/test-mkostemp-O_CLOEXEC.c | 45 +++++++++++++++++++++++++++++++ test/stdlib/test-mkostemp-child.c | 22 +++++++++++++++ test/test-skeleton.c | 17 +++++++++++- 35 files changed, 201 insertions(+), 81 deletions(-) create mode 100644 test/stdlib/test-mkostemp-O_CLOEXEC.c create mode 100644 test/stdlib/test-mkostemp-child.c diff --git a/Makefile.in b/Makefile.in index 3b8e043..5d60dda 100644 --- a/Makefile.in +++ b/Makefile.in @@ -276,7 +276,7 @@ HEADERS_RM-$(UCLIBC_HAS_GETTEXT_AWARENESS) += libintl.h HEADERS_RM-$(UCLIBC_HAS_GLIBC_CUSTOM_PRINTF) += printf.h HEADERS_RM-$(UCLIBC_HAS_GLOB) += glob.h HEADERS_RM-$(UCLIBC_HAS_GNU_ERROR) += error.h -HEADERS_RM-$(UCLIBC_HAS_GNU_GETOPT)$(UCLIBC_HAS_GETOPT_LONG) += getopt.h +HEADERS_RM-$(UCLIBC_HAS_GETOPT_LONG) += getopt.h HEADERS_RM-$(UCLIBC_HAS_IPV6) += netinet/ip6.h netinet/icmp6.h HEADERS_RM-$(UCLIBC_HAS_BACKTRACE) += execinfo.h HEADERS_RM-$(UCLIBC_HAS_LOCALE) += iconv.h bits/uClibc_ctype.h diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in index 32180f7..8e603b2 100644 --- a/extra/Configs/Config.in +++ b/extra/Configs/Config.in @@ -1430,6 +1430,13 @@ config UCLIBC_HAS_STRING_ARCH_OPT These are small and fast, the only reason _not_ to say Y here is for debugging purposes. +config UCLIBC_HAS_STDIO_FUTEXES + bool "Use futexes for multithreaded I/O locking" + depends on UCLIBC_HAS_THREADS_NATIVE + help + If you want to compile uClibc to use futexes for low-level + I/O locking, answer Y. Otherwise, answer N. + config UCLIBC_HAS_CTYPE_TABLES bool "Use Table Versions Of 'ctype.h' Functions." default y @@ -1886,32 +1893,25 @@ config UCLIBC_HAS_GNU_GETOPT help Answer Y if you want to include full gnu getopt() instead of a (much smaller) SUSv3 compatible getopt(). + Note that getopt_long, getopt_long_only as well as getsubopt + are implemented on top of this choice. Most people will answer Y. -config UCLIBC_HAS_STDIO_FUTEXES - bool "Use futexes for multithreaded I/O locking" - depends on UCLIBC_HAS_THREADS_NATIVE - help - If you want to compile uClibc to use futexes for low-level - I/O locking, answer Y. Otherwise, answer N. - config UCLIBC_HAS_GETOPT_LONG - bool "Support getopt_long/getopt_long_only" - depends on !UCLIBC_HAS_GNU_GETOPT + bool "Support getopt_long/getopt_long_only (glibc-compat)" default y help - Answer Y if you want to include getopt_long[_only() used by many - apps, even busybox. + Answer Y if you want to include getopt_long[_only()] used by many + apps. Most people will answer Y. config UCLIBC_HAS_GNU_GETSUBOPT - bool "Support glibc getsubopt" + bool "Support getsubopt" default y help - Answer Y if you want to include glibc getsubopt() instead of a - smaller SUSv3 compatible getsubopt(). + Answer Y if you want to include getsubopt(). Most people will answer Y. endmenu diff --git a/extra/config/conf.c b/extra/config/conf.c index db09053..b24c1c3 100644 --- a/extra/config/conf.c +++ b/extra/config/conf.c @@ -10,7 +10,6 @@ #include <string.h> #include <time.h> #include <unistd.h> -#include <getopt.h> #include <sys/stat.h> #include <sys/time.h> #include <errno.h> @@ -447,7 +446,7 @@ static void check_conf(struct menu *menu) } #if 00 // || !defined __UCLIBC__ || \ - (defined UCLIBC_HAS_GETOPT_LONG || defined UCLIBC_HAS_GNU_GETOPT) + defined __UCLIBC_HAS_GETOPT_LONG__ static struct option long_opts[] = { {"oldaskconfig", no_argument, NULL, oldaskconfig}, {"oldconfig", no_argument, NULL, oldconfig}, @@ -526,7 +525,7 @@ int main(int ac, char **av) tty_stdio = isatty(0) && isatty(1) && isatty(2); #if 00// !defined __UCLIBC__ || \ - (defined UCLIBC_HAS_GETOPT_LONG || defined UCLIBC_HAS_GNU_GETOPT) + defined __UCLIBC_HAS_GETOPT_LONG__ while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) #else char *gch = "asonymArDSld"; diff --git a/include/getopt.h b/include/getopt.h index a682f9c..de9da26 100644 --- a/include/getopt.h +++ b/include/getopt.h @@ -1,4 +1,4 @@ -/* This file will not be installed if not using gnu getopt. */ +/* This file will not be installed if not using getopt_long. */ #include <bits/getopt.h> diff --git a/libc/inet/getaddrinfo.c b/libc/inet/getaddrinfo.c index b61d69c..168adb1 100644 --- a/libc/inet/getaddrinfo.c +++ b/libc/inet/getaddrinfo.c @@ -308,7 +308,7 @@ gaih_local(const char *name, const struct gaih_service *service, char *buf = ((struct sockaddr_un *)ai->ai_addr)->sun_path; if (__path_search(buf, L_tmpnam, NULL, NULL, 0) != 0 - || __gen_tempname(buf, __GT_NOCREATE, 0) != 0 + || __gen_tempname(buf, __GT_NOCREATE, 0, 0) != 0 ) { return -EAI_SYSTEM; } diff --git a/libc/misc/internals/tempname.c b/libc/misc/internals/tempname.c index 18fd823..edcc31c 100644 --- a/libc/misc/internals/tempname.c +++ b/libc/misc/internals/tempname.c @@ -177,7 +177,7 @@ static void brain_damaged_fillrand(unsigned char *buf, unsigned int len) __GT_DIR: create a directory with given mode. */ -int attribute_hidden __gen_tempname (char *tmpl, int kind, mode_t mode) +int attribute_hidden __gen_tempname (char *tmpl, int kind, int flags, mode_t mode) { char *XXXXXX; unsigned int i; @@ -219,11 +219,11 @@ int attribute_hidden __gen_tempname (char *tmpl, int kind, mode_t mode) fd = 0; } case __GT_FILE: - fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL, mode); + fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL | flags, mode); break; #if defined __UCLIBC_HAS_LFS__ case __GT_BIGFILE: - fd = open64 (tmpl, O_RDWR | O_CREAT | O_EXCL, mode); + fd = open64 (tmpl, O_RDWR | O_CREAT | O_EXCL | flags, mode); break; #endif case __GT_DIR: diff --git a/libc/misc/internals/tempname.h b/libc/misc/internals/tempname.h index e75b632..edfe26d 100644 --- a/libc/misc/internals/tempname.h +++ b/libc/misc/internals/tempname.h @@ -10,7 +10,7 @@ extern int ___path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx /*, int try_tmpdir */) attribute_hidden; #define __path_search(tmpl, tmpl_len, dir, pfx, try_tmpdir) ___path_search(tmpl, tmpl_len, dir, pfx) -extern int __gen_tempname (char *__tmpl, int __kind, mode_t mode) attribute_hidden; +extern int __gen_tempname (char *__tmpl, int __kind, int flags, mode_t mode) attribute_hidden; /* The __kind argument to __gen_tempname may be one of: */ #define __GT_FILE 0 /* create a file */ diff --git a/libc/stdio/_fpmaxtostr.c b/libc/stdio/_fpmaxtostr.c index f7ea792..3580584 100644 --- a/libc/stdio/_fpmaxtostr.c +++ b/libc/stdio/_fpmaxtostr.c @@ -45,11 +45,6 @@ */ #define isnan(x) ((x) != (x)) -/* Without seminumerical functions to examine the sign bit, this is - * about the best we can do to test for '-0'. - */ -#define zeroisnegative(x) ((1./(x)) < 0) - /*****************************************************************************/ /* Don't change anything that follows peroid!!! ;-) */ /*****************************************************************************/ @@ -262,7 +257,13 @@ ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info, if (x == 0) { /* Handle 0 now to avoid false positive. */ #ifdef __UCLIBC_HAVE_SIGNED_ZERO__ - if (zeroisnegative(x)) { /* Handle 'signed' zero. */ + union { + double x; + struct { + unsigned int l1, l2; + } i; + } u = {x}; + if (u.i.l1 ^ u.i.l2) { /* Handle 'signed' zero. */ *sign_str = '-'; } #endif /* __UCLIBC_HAVE_SIGNED_ZERO__ */ diff --git a/libc/stdio/tempnam.c b/libc/stdio/tempnam.c index 232ed02..74bb26e 100644 --- a/libc/stdio/tempnam.c +++ b/libc/stdio/tempnam.c @@ -35,7 +35,7 @@ tempnam (const char *dir, const char *pfx) if (__path_search (buf, FILENAME_MAX, dir, pfx, 1)) return NULL; - if (__gen_tempname (buf, __GT_NOCREATE, 0)) + if (__gen_tempname (buf, __GT_NOCREATE, 0, 0)) return NULL; return strdup (buf); diff --git a/libc/stdio/tmpfile.c b/libc/stdio/tmpfile.c index a9bf474..83c85b5 100644 --- a/libc/stdio/tmpfile.c +++ b/libc/stdio/tmpfile.c @@ -35,7 +35,7 @@ FILE * tmpfile (void) if (__path_search (buf, FILENAME_MAX, NULL, "tmpf", 0)) return NULL; - fd = __gen_tempname (buf, __GT_FILE, S_IRUSR | S_IWUSR); + fd = __gen_tempname (buf, __GT_FILE, 0, S_IRUSR | S_IWUSR); if (fd < 0) return NULL; diff --git a/libc/stdio/tmpnam.c b/libc/stdio/tmpnam.c index 88b9bff..ffed862 100644 --- a/libc/stdio/tmpnam.c +++ b/libc/stdio/tmpnam.c @@ -40,7 +40,7 @@ tmpnam (char *s) 0)) return NULL; - if (__builtin_expect (__gen_tempname (tmpbuf, __GT_NOCREATE, 0), 0)) + if (__builtin_expect (__gen_tempname (tmpbuf, __GT_NOCREATE, 0, 0), 0)) return NULL; if (s == NULL) diff --git a/libc/stdio/tmpnam_r.c b/libc/stdio/tmpnam_r.c index 8cde84d..bfd60a4 100644 --- a/libc/stdio/tmpnam_r.c +++ b/libc/stdio/tmpnam_r.c @@ -27,7 +27,7 @@ char * tmpnam_r (char *s) if (__path_search (s, L_tmpnam, NULL, NULL, 0)) return NULL; - if (__gen_tempname (s, __GT_NOCREATE, 0)) + if (__gen_tempname (s, __GT_NOCREATE, 0, 0)) return NULL; return s; diff --git a/libc/stdlib/mkdtemp.c b/libc/stdlib/mkdtemp.c index da7598a..e6d4a36 100644 --- a/libc/stdlib/mkdtemp.c +++ b/libc/stdlib/mkdtemp.c @@ -29,7 +29,7 @@ (This function comes from OpenBSD.) */ char * mkdtemp (char *template) { - if (__gen_tempname (template, __GT_DIR, S_IRUSR | S_IWUSR | S_IXUSR)) + if (__gen_tempname (template, __GT_DIR, 0, S_IRUSR | S_IWUSR | S_IXUSR)) return NULL; else return template; diff --git a/libc/stdlib/mkostemp.c b/libc/stdlib/mkostemp.c index 0369235..912be30 100644 --- a/libc/stdlib/mkostemp.c +++ b/libc/stdlib/mkostemp.c @@ -17,6 +17,7 @@ #include <stdio.h> #include <stdlib.h> +#include <fcntl.h> #include "../misc/internals/tempname.h" /* Generate a unique temporary file name from TEMPLATE. @@ -26,5 +27,6 @@ int mkostemp (char *template, int flags) { - return __gen_tempname (template, __GT_FILE, flags); + flags -= flags & O_ACCMODE; /* Remove O_RDONLY, O_WRONLY, and O_RDWR. */ + return __gen_tempname (template, __GT_FILE, flags, S_IRUSR | S_IWUSR); } diff --git a/libc/stdlib/mkostemp64.c b/libc/stdlib/mkostemp64.c index d21def5..c6d6d84 100644 --- a/libc/stdlib/mkostemp64.c +++ b/libc/stdlib/mkostemp64.c @@ -27,5 +27,5 @@ int mkostemp64 (char *template, int flags) { - return __gen_tempname (template, __GT_BIGFILE, flags | O_LARGEFILE); + return __gen_tempname (template, __GT_BIGFILE, flags | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IXUSR); } diff --git a/libc/stdlib/mkstemp.c b/libc/stdlib/mkstemp.c index 61c7175..a3a1595 100644 --- a/libc/stdlib/mkstemp.c +++ b/libc/stdlib/mkstemp.c @@ -26,5 +26,5 @@ Then open the file and return a fd. */ int mkstemp (char *template) { - return __gen_tempname (template, __GT_FILE, S_IRUSR | S_IWUSR); + return __gen_tempname (template, __GT_FILE, 0, S_IRUSR | S_IWUSR); } diff --git a/libc/stdlib/mkstemp64.c b/libc/stdlib/mkstemp64.c index e29be2d..6f2ee3e 100644 --- a/libc/stdlib/mkstemp64.c +++ b/libc/stdlib/mkstemp64.c @@ -26,5 +26,5 @@ Then open the file and return a fd. */ int mkstemp64 (char *template) { - return __gen_tempname (template, __GT_BIGFILE, S_IRUSR | S_IWUSR); + return __gen_tempname (template, __GT_BIGFILE, 0, S_IRUSR | S_IWUSR); } diff --git a/libc/stdlib/mktemp.c b/libc/stdlib/mktemp.c index edd001d..1ff93da 100644 --- a/libc/stdlib/mktemp.c +++ b/libc/stdlib/mktemp.c @@ -24,7 +24,7 @@ * they are replaced with a string that makes the filename unique. */ char *mktemp(char *template) { - if (__gen_tempname (template, __GT_NOCREATE, 0) < 0) + if (__gen_tempname (template, __GT_NOCREATE, 0, 0) < 0) /* We return the null string if we can't find a unique file name. */ template[0] = '\0'; diff --git a/libc/sysdeps/linux/common/bits/getopt.h b/libc/sysdeps/linux/common/bits/getopt.h index a49f023..dababe0 100644 --- a/libc/sysdeps/linux/common/bits/getopt.h +++ b/libc/sysdeps/linux/common/bits/getopt.h @@ -126,7 +126,7 @@ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW; libc_hidden_proto(getopt) -#if defined __UCLIBC_HAS_GNU_GETOPT__ || defined __UCLIBC_HAS_GETOPT_LONG__ +#if defined __UCLIBC_HAS_GETOPT_LONG__ #ifndef __need_getopt extern int getopt_long (int ___argc, char *const *___argv, const char *__shortopts, diff --git a/libc/unistd/Makefile.in b/libc/unistd/Makefile.in index b15d60a..659008d 100644 --- a/libc/unistd/Makefile.in +++ b/libc/unistd/Makefile.in @@ -16,10 +16,16 @@ OMIT-$(ARCH_USE_MMU) += __exec_alloc.c OMIT-$(if $(UCLIBC_SUSV3_LEGACY),,y) += ualarm.c usleep.c #OMIT-$(UCLIBC_HAS_THREADS_NATIVE) += sleep.c -# XXX: GNU_GETOPT comes with getopt_long unconditionally, which is wrong -GO_LONG := $(if $(UCLIBC_HAS_GNU_GETOPT),getopt_long-simple.c) -OMIT-y += $(if $(UCLIBC_HAS_GNU_GETOPT),getopt-susv3.c $(GO_LONG),getopt.c) -OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),getsubopt-susv3.c,getsubopt.c) +ifeq ($(UCLIBC_HAS_GNU_GETOPT),y) +# GNU getopt family +OMIT-y += getopt-susv3.c getopt_long-simple.c getsubopt-susv3.c +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),,getsubopt.c) +else +# SuS getopt family +OMIT-y += getopt.c getsubopt.c +OMIT-y += $(if $(UCLIBC_HAS_GETOPT_LONG),,getopt_long-simple.c) +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),,getsubopt-susv3.c) +endif CSRC-y := $(filter-out $(OMIT-y),$(CSRC-y)) diff --git a/libc/unistd/getopt.c b/libc/unistd/getopt.c index 3944c7c..f63482b 100644 --- a/libc/unistd/getopt.c +++ b/libc/unistd/getopt.c @@ -1162,6 +1162,7 @@ getopt (int argc, char *const *argv, const char *optstring) } libc_hidden_def(getopt) +#if defined __UCLIBC_HAS_GETOPT_LONG__ int getopt_long (int argc, char *const *argv, const char *options, const struct option *long_options, int *opt_index) @@ -1180,5 +1181,6 @@ getopt_long_only (int argc, char *const *argv, const char *options, { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } +#endif /* __UCLIBC_HAS_GETOPT_LONG__ */ #endif /* Not ELIDE_CODE. */ diff --git a/libpthread/nptl/sem_open.c b/libpthread/nptl/sem_open.c index 1b36164..3a72079 100644 --- a/libpthread/nptl/sem_open.c +++ b/libpthread/nptl/sem_open.c @@ -336,7 +336,7 @@ sem_open (const char *name, int oflag, ...) mempcpy (mempcpy (tmpfname, mountpoint.dir, mountpoint.dirlen), "XXXXXX", 7); - fd = __gen_tempname (tmpfname, __GT_FILE, mode); + fd = __gen_tempname (tmpfname, __GT_FILE, 0, mode); if (fd == -1) return SEM_FAILED; diff --git a/test/.gitignore b/test/.gitignore index 8f32031..5944f0a 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -274,6 +274,8 @@ stdlib/testarc4random stdlib/testatexit stdlib/test-canon stdlib/test-canon2 +stdlib/test-mkostemp-O_CLOEXEC +stdlib/test-mkostemp-child stdlib/teston_exit stdlib/teststrtol stdlib/teststrtoq diff --git a/test/Rules.mak b/test/Rules.mak index ed72db2..805a349 100644 --- a/test/Rules.mak +++ b/test/Rules.mak @@ -78,6 +78,9 @@ CFLAGS := -nostdinc -I$(top_builddir)$(LOCAL_INSTALL_PATH)/usr/include CFLAGS += $(XCOMMON_CFLAGS) $(KERNEL_INCLUDES) $(CC_INC) CFLAGS += $(OPTIMIZATION) $(CPU_CFLAGS) $(XWARNINGS) +$(eval $(call check-gcc-var,-Wno-missing-field-initializers)) +CFLAGS += $(CFLAG_-Wno-missing-field-initializers) + # Can't add $(OPTIMIZATION) here, it may be target-specific. # Just adding -Os for now. HOST_CFLAGS += $(XCOMMON_CFLAGS) -Os $(XWARNINGS) -std=gnu99 diff --git a/test/misc/Makefile.in b/test/misc/Makefile.in index 52a3e71..1e0da6f 100644 --- a/test/misc/Makefile.in +++ b/test/misc/Makefile.in @@ -8,6 +8,14 @@ TESTS_DISABLED += tst-statfs # assuming host has LFS on endif CFLAGS_dirent64 := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +ifeq ($(UCLIBC_LINUX_SPECIFIC),) +TESTS_DISABLED += tst-inotify +endif + +ifeq ($(UCLIBC_HAS_GLOB),) +TESTS_DISABLED += bug-glob2 +endif + DODIFF_dirent := 1 DODIFF_dirent64 := 1 DODIFF_tst-statfs := 1 diff --git a/test/misc/bug-glob2.c b/test/misc/bug-glob2.c index 98e3bf7..069891b 100644 --- a/test/misc/bug-glob2.c +++ b/test/misc/bug-glob2.c @@ -18,7 +18,6 @@ <http://www.gnu.org/licenses/>. */ #include <errno.h> -#include <error.h> #include <dirent.h> #include <glob.h> #include <stdlib.h> diff --git a/test/misc/tst-inotify.c b/test/misc/tst-inotify.c index 9d940f7..f9f6830 100644 --- a/test/misc/tst-inotify.c +++ b/test/misc/tst-inotify.c @@ -11,7 +11,6 @@ #include <string.h> #include <unistd.h> #include <errno.h> -#include <error.h> #include <inttypes.h> #include <sys/inotify.h> #include <sys/fcntl.h> @@ -39,7 +38,7 @@ do_test(void) /* nonblocking inotify should return immediately with no events */ ret = read(ifd, &e, sizeof(e)); if (ret != -1 || errno != EAGAIN) { - error(0, 0, "first read() returned %d", ret); + fprintf(stderr, "first read() returned %d\n", ret); result = 1; } @@ -49,12 +48,12 @@ do_test(void) /* now check whether our event was seen */ ret = read(ifd, &e, sizeof(e)); if (ret != sizeof(e)) { - error(0, 0, "second read() returned %d", ret); + fprintf(stderr, "second read() returned %d\n", ret); result = 1; } if (!(e.mask & IN_DELETE_SELF)) { - error(0, 0, "incorrect event mask: %" PRIx32, e.mask); + fprintf(stderr, "incorrect event mask: %" PRIx32 "\n", e.mask); result = 1; } diff --git a/test/misc/tst-utmp.c b/test/misc/tst-utmp.c index ca92cf2..08a6f8e 100644 --- a/test/misc/tst-utmp.c +++ b/test/misc/tst-utmp.c @@ -18,7 +18,6 @@ <http://www.gnu.org/licenses/>. */ #include <errno.h> -#include <error.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> @@ -69,8 +68,11 @@ do_prepare (int argc, char *argv[]) /* Open our test file. */ fd = mkstemp (name); - if (fd == -1) - error (EXIT_FAILURE, errno, "cannot open test file `%s'", name); + if (fd == -1) { + fprintf (stderr, "cannot open test file `%s': ", name); + perror (NULL); + exit (EXIT_FAILURE); + } } struct utmp entry[] = @@ -110,7 +112,7 @@ do_init (void) { if (pututline (&entry[n]) == NULL) { - error (0, errno, "cannot write UTMP entry"); + perror ("cannot write UTMP entry"); return 1; } } @@ -135,7 +137,7 @@ do_check (void) if (n < num_entries && memcmp (ut, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -144,7 +146,7 @@ do_check (void) if (n != num_entries) { - error (0, 0, "number of UTMP entries is incorrect"); + fprintf (stderr, "number of UTMP entries is incorrect\n"); return 1; } @@ -176,7 +178,7 @@ simulate_login (const char *line, const char *user) if (pututline (&entry[n]) == NULL) { - error (0, errno, "cannot write UTMP entry"); + perror ("cannot write UTMP entry"); return 1; } @@ -186,7 +188,7 @@ simulate_login (const char *line, const char *user) } } - error (0, 0, "no entries available"); + fprintf (stderr, "no entries available\n"); return 1; } @@ -210,7 +212,7 @@ simulate_logout (const char *line) if (pututline (&entry[n]) == NULL) { - error (0, errno, "cannot write UTMP entry"); + perror ("cannot write UTMP entry"); return 1; } @@ -220,7 +222,7 @@ simulate_logout (const char *line) } } - error (0, 0, "no entry found for `%s'", line); + fprintf (stderr, "no entry found for `%s'\n", line); return 1; } @@ -237,7 +239,8 @@ check_login (const char *line) up = getutline (&ut); if (up == NULL) { - error (0, errno, "cannot get entry for line `%s'", line); + fprintf (stderr, "cannot get entry for line `%s': ", line); + perror(NULL); return 1; } @@ -249,7 +252,7 @@ check_login (const char *line) { if (memcmp (up, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -257,7 +260,7 @@ check_login (const char *line) } } - error (0, 0, "bogus entry for line `%s'", line); + fprintf (stderr, "bogus entry for line `%s'\n", line); return 1; } @@ -271,7 +274,7 @@ check_logout (const char *line) strcpy (ut.ut_line, line); if (getutline (&ut) != NULL) { - error (0, 0, "bogus login entry for `%s'", line); + fprintf (stderr, "bogus login entry for `%s'\n", line); return 1; } @@ -294,7 +297,8 @@ check_id (const char *id) up = getutid (&ut); if (up == NULL) { - error (0, errno, "cannot get entry for ID `%s'", id); + fprintf (stderr, "cannot get entry for ID `%s': ", id); + perror (NULL); return 1; } @@ -306,7 +310,7 @@ check_id (const char *id) { if (memcmp (up, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -314,7 +318,7 @@ check_id (const char *id) } } - error (0, 0, "bogus entry for ID `%s'", id); + fprintf (stderr, "bogus entry for ID `%s'\n", id); return 1; } @@ -331,7 +335,8 @@ check_type (int type) up = getutid (&ut); if (up == NULL) { - error (0, errno, "cannot get entry for type `%d'", type); + fprintf (stderr, "cannot get entry for type `%d': ", type); + perror (NULL); return 1; } @@ -343,7 +348,7 @@ check_type (int type) { if (memcmp (up, &entry[n], sizeof (struct utmp))) { - error (0, 0, "UTMP entry does not match"); + fprintf (stderr, "UTMP entry does not match\n"); return 1; } @@ -351,7 +356,7 @@ check_type (int type) } } - error (0, 0, "bogus entry for type `%d'", type); + fprintf (stderr, "bogus entry for type `%d'\n", type); return 1; } diff --git a/test/nptl/tst-cancel7.c b/test/nptl/tst-cancel7.c index 3bdfa9f..fe543f7 100644 --- a/test/nptl/tst-cancel7.c +++ b/test/nptl/tst-cancel7.c @@ -196,13 +196,16 @@ do_cleanup (void) #define OPT_COMMAND 10000 #define OPT_PIDFILE 10001 #define CMDLINE_OPTIONS \ + "c:p:" +/* { "command", required_argument, NULL, OPT_COMMAND }, \ { "pidfile", required_argument, NULL, OPT_PIDFILE }, +*/ #define CMDLINE_PROCESS \ - case OPT_COMMAND: \ + case 'c': \ command = optarg; \ break; \ - case OPT_PIDFILE: \ + case 'p': \ pidfile = optarg; \ break; // #define CLEANUP_HANDLER do_cleanup () diff --git a/test/nptl/tst-mqueue7.c b/test/nptl/tst-mqueue7.c index e8d53ad..01d7cd7 100644 --- a/test/nptl/tst-mqueue7.c +++ b/test/nptl/tst-mqueue7.c @@ -32,10 +32,12 @@ static mqd_t after_exec = (mqd_t) -1; #define CMDLINE_OPTIONS \ + "a:" +/* { "after-exec", required_argument, NULL, OPT_AFTEREXEC }, - +*/ #define CMDLINE_PROCESS \ - case OPT_AFTEREXEC: \ + case 'a': \ after_exec = (mqd_t) strtoul (optarg, NULL, 0); \ break; diff --git a/test/pwd_grp/getgroups.c b/test/pwd_grp/getgroups.c index 5769b18..c343552 100644 --- a/test/pwd_grp/getgroups.c +++ b/test/pwd_grp/getgroups.c @@ -13,7 +13,6 @@ #include <sys/types.h> #include <pwd.h> #include <grp.h> -#include <err.h> /* The number of errors encountered so far. */ static int problems = 0; @@ -25,7 +24,7 @@ static void print_group(gid_t gid) grp = getgrgid(gid); if (grp == NULL) { - warn("cannot find name for group ID %u", gid); + fprintf(stderr, "cannot find name for group ID %u\n", gid); problems++; } @@ -46,12 +45,14 @@ static int xgetgroups(gid_t gid, int *n_groups, gid_t ** groups) /* Add 1 just in case max_n_groups is zero. */ g = (gid_t *) malloc(max_n_groups * sizeof(gid_t) + 1); - if (g == NULL) - err(EXIT_FAILURE, "out of memory"); + if (g == NULL) { + fprintf(stderr, "out of memory\n"); + exit(EXIT_FAILURE); + } ng = getgroups(max_n_groups, g); if (ng < 0) { - warn("cannot get supplemental group list"); + fprintf(stderr, "cannot get supplemental group list\n"); ++fail; free(g); } diff --git a/test/stdlib/Makefile.in b/test/stdlib/Makefile.in index 0bb0697..53e5a72 100644 --- a/test/stdlib/Makefile.in +++ b/test/stdlib/Makefile.in @@ -5,3 +5,9 @@ DODIFF_qsort := 1 DODIFF_testatexit := 1 DODIFF_teston_exit := 1 DODIFF_teststrtol := 1 + +TESTS_DISABLED := +ifeq ($(UCLIBC_HAS_PTY),) +TESTS_DISABLED += ptytest +endif + diff --git a/test/stdlib/test-mkostemp-O_CLOEXEC.c b/test/stdlib/test-mkostemp-O_CLOEXEC.c new file mode 100644 index 0000000..9ff229a --- /dev/null +++ b/test/stdlib/test-mkostemp-O_CLOEXEC.c @@ -0,0 +1,45 @@ +#define _XOPEN_SOURCE_EXTENDED +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <sys/wait.h> +#include <errno.h> + +#if !defined __ARCH_USE_MMU__ +# define fork vfork +#endif + +int main(int argc, char *argv[]) { + int fd, status; + char buff[5]; + char template[] = "/tmp/test-mkostemp.XXXXXX"; + + fd = mkostemp(template, O_CLOEXEC); + unlink(template); + + snprintf(buff, 5, "%d", fd); + + if(!fork()) + if(execl("./test-mkostemp-child", "test-mkostemp-child", buff, NULL) == -1) + exit(EXIT_FAILURE); + + wait(&status); + + memset(buff, 0, 5); + lseek(fd, 0, SEEK_SET); + errno = 0; + if(read(fd, buff, 5) == -1) + exit(EXIT_FAILURE); + + if(!strncmp(buff, "test", 5)) + exit(EXIT_FAILURE); + else + exit(EXIT_SUCCESS); + + close(fd); + exit(EXIT_SUCCESS); +} diff --git a/test/stdlib/test-mkostemp-child.c b/test/stdlib/test-mkostemp-child.c new file mode 100644 index 0000000..708bd80 --- /dev/null +++ b/test/stdlib/test-mkostemp-child.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +int main(int argc, char *argv[]) { + int fd; + + /* This file gets built and run as a test, but its + * really just a helper for test-mkostemp-O_CLOEXEC.c. + * So, we'll always return succcess. + */ + if(argc != 2) + exit(EXIT_SUCCESS); + + sscanf(argv[1], "%d", &fd); + + if(write(fd, "test\0", 5) == -1) + ; /* Don't Panic! Failure is okay here. */ + + close(fd); + exit(EXIT_SUCCESS); +} diff --git a/test/test-skeleton.c b/test/test-skeleton.c index 6d4a8b6..69ef99f 100644 --- a/test/test-skeleton.c +++ b/test/test-skeleton.c @@ -18,7 +18,6 @@ <http://www.gnu.org/licenses/>. */ #include <errno.h> -#include <getopt.h> #include <malloc.h> #include <search.h> #include <signal.h> @@ -46,6 +45,7 @@ #define OPT_DIRECT 1000 #define OPT_TESTDIR 1001 +#if 0 /* Not used in uClibc */ static struct option options[] = { #ifdef CMDLINE_OPTIONS @@ -55,6 +55,7 @@ static struct option options[] = { "test-dir", required_argument, NULL, OPT_TESTDIR }, { NULL, 0, NULL, 0 } }; +#endif /* PID of the test itself. */ static pid_t pid; @@ -144,7 +145,9 @@ signal_handler (int sig __attribute__ ((unused))) /* Wait for it to terminate. */ for (i = 0; i < 5; ++i) { +#ifdef __UCLIBC_HAS_REALTIME__ struct timespec ts; +#endif killed = waitpid (pid, &status, WNOHANG|WUNTRACED); if (killed != 0) break; @@ -153,9 +156,14 @@ signal_handler (int sig __attribute__ ((unused))) nanosleep() call return prematurely, all the better. We won't restart it since this probably means the child process finally died. */ +#ifdef __UCLIBC_HAS_REALTIME__ ts.tv_sec = 0; ts.tv_nsec = 100000000; nanosleep (&ts, NULL); +#else + /* No nanosleep, just sleep 1s instead of 0.1s */ + sleep(1); +#endif } if (killed != 0 && killed != pid) { @@ -234,7 +242,14 @@ main (int argc, char *argv[]) setbuf (stdout, NULL); #endif +#if 0 /* Not used in uClibc */ while ((opt = getopt_long (argc, argv, "+", options, NULL)) != -1) +#else +# ifndef CMDLINE_OPTIONS +# define CMDLINE_OPTIONS "" +# endif + while ((opt = getopt (argc, argv, "+" CMDLINE_OPTIONS)) >= 0) +#endif switch (opt) { case '?': hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. 37515213e9c7070ffa048ad1abf76802373af496
by wbx@helium.waldemar-brodkorb.de 10 Dec '14

10 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via 37515213e9c7070ffa048ad1abf76802373af496 (commit) via 9649721950565d8a21a89017ac712257da644b75 (commit) via 0cda37ffaf3cb7aec2c1c8b49e2a5b8f82255c3e (commit) from 86087816201d61f1b72d8bd7d91cfc7eb26422e9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 37515213e9c7070ffa048ad1abf76802373af496 Author: Waldemar Brodkorb <wbx(a)openadk.org> Date: Wed Dec 10 13:05:43 2014 -0600 disable test for noMMU commit 9649721950565d8a21a89017ac712257da644b75 Author: Anthony G. Basile <blueness(a)gentoo.org> Date: Mon Oct 27 16:13:34 2014 -0400 mkostemp: fix implementation mkostemp(char *template, int flags) generates a unique temporary filename from a template. The flags parameter accepts three of the same flags as open(2): O_APPEND, O_CLOEXEC, and O_SYNC. The current implementation of mkostemp(3) does not respect the flags and in fact confuses the flags with the file mode which should always be S_IRUSR | S_IWUSR. This patch corrects this issue. Signed-off-by: Anthony G. Basile <blueness(a)gentoo.org> commit 0cda37ffaf3cb7aec2c1c8b49e2a5b8f82255c3e Author: wangyufen <wangyufen(a)huawei.com> Date: Tue Nov 11 15:59:11 2014 +0800 add argument check in mknod mknod() in glibc/eglibc will check the argument, like this, ... if (k_dev != dev) { __set_errno (EINVAL); return -1; } ... So add argument check in uclibc's mknod() too. Signed-off-by: Wang Yufen <wangyufen(a)huawei.com> ----------------------------------------------------------------------- Summary of changes: libc/inet/getaddrinfo.c | 2 +- libc/misc/internals/tempname.c | 6 ++--- libc/misc/internals/tempname.h | 2 +- libc/stdio/tempnam.c | 2 +- libc/stdio/tmpfile.c | 2 +- libc/stdio/tmpnam.c | 2 +- libc/stdio/tmpnam_r.c | 2 +- libc/stdlib/mkdtemp.c | 2 +- libc/stdlib/mkostemp.c | 4 +++- libc/stdlib/mkostemp64.c | 2 +- libc/stdlib/mkstemp.c | 2 +- libc/stdlib/mkstemp64.c | 2 +- libc/stdlib/mktemp.c | 2 +- libc/sysdeps/linux/common/mknod.c | 4 ++++ libpthread/nptl/sem_open.c | 2 +- test/.gitignore | 2 ++ test/stdlib/Makefile.in | 4 ++++ test/stdlib/test-mkostemp-O_CLOEXEC.c | 40 +++++++++++++++++++++++++++++++++ test/stdlib/test-mkostemp-child.c | 22 ++++++++++++++++++ 19 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 test/stdlib/test-mkostemp-O_CLOEXEC.c create mode 100644 test/stdlib/test-mkostemp-child.c diff --git a/libc/inet/getaddrinfo.c b/libc/inet/getaddrinfo.c index b61d69c..168adb1 100644 --- a/libc/inet/getaddrinfo.c +++ b/libc/inet/getaddrinfo.c @@ -308,7 +308,7 @@ gaih_local(const char *name, const struct gaih_service *service, char *buf = ((struct sockaddr_un *)ai->ai_addr)->sun_path; if (__path_search(buf, L_tmpnam, NULL, NULL, 0) != 0 - || __gen_tempname(buf, __GT_NOCREATE, 0) != 0 + || __gen_tempname(buf, __GT_NOCREATE, 0, 0) != 0 ) { return -EAI_SYSTEM; } diff --git a/libc/misc/internals/tempname.c b/libc/misc/internals/tempname.c index 18fd823..edcc31c 100644 --- a/libc/misc/internals/tempname.c +++ b/libc/misc/internals/tempname.c @@ -177,7 +177,7 @@ static void brain_damaged_fillrand(unsigned char *buf, unsigned int len) __GT_DIR: create a directory with given mode. */ -int attribute_hidden __gen_tempname (char *tmpl, int kind, mode_t mode) +int attribute_hidden __gen_tempname (char *tmpl, int kind, int flags, mode_t mode) { char *XXXXXX; unsigned int i; @@ -219,11 +219,11 @@ int attribute_hidden __gen_tempname (char *tmpl, int kind, mode_t mode) fd = 0; } case __GT_FILE: - fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL, mode); + fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL | flags, mode); break; #if defined __UCLIBC_HAS_LFS__ case __GT_BIGFILE: - fd = open64 (tmpl, O_RDWR | O_CREAT | O_EXCL, mode); + fd = open64 (tmpl, O_RDWR | O_CREAT | O_EXCL | flags, mode); break; #endif case __GT_DIR: diff --git a/libc/misc/internals/tempname.h b/libc/misc/internals/tempname.h index e75b632..edfe26d 100644 --- a/libc/misc/internals/tempname.h +++ b/libc/misc/internals/tempname.h @@ -10,7 +10,7 @@ extern int ___path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx /*, int try_tmpdir */) attribute_hidden; #define __path_search(tmpl, tmpl_len, dir, pfx, try_tmpdir) ___path_search(tmpl, tmpl_len, dir, pfx) -extern int __gen_tempname (char *__tmpl, int __kind, mode_t mode) attribute_hidden; +extern int __gen_tempname (char *__tmpl, int __kind, int flags, mode_t mode) attribute_hidden; /* The __kind argument to __gen_tempname may be one of: */ #define __GT_FILE 0 /* create a file */ diff --git a/libc/stdio/tempnam.c b/libc/stdio/tempnam.c index 232ed02..74bb26e 100644 --- a/libc/stdio/tempnam.c +++ b/libc/stdio/tempnam.c @@ -35,7 +35,7 @@ tempnam (const char *dir, const char *pfx) if (__path_search (buf, FILENAME_MAX, dir, pfx, 1)) return NULL; - if (__gen_tempname (buf, __GT_NOCREATE, 0)) + if (__gen_tempname (buf, __GT_NOCREATE, 0, 0)) return NULL; return strdup (buf); diff --git a/libc/stdio/tmpfile.c b/libc/stdio/tmpfile.c index a9bf474..83c85b5 100644 --- a/libc/stdio/tmpfile.c +++ b/libc/stdio/tmpfile.c @@ -35,7 +35,7 @@ FILE * tmpfile (void) if (__path_search (buf, FILENAME_MAX, NULL, "tmpf", 0)) return NULL; - fd = __gen_tempname (buf, __GT_FILE, S_IRUSR | S_IWUSR); + fd = __gen_tempname (buf, __GT_FILE, 0, S_IRUSR | S_IWUSR); if (fd < 0) return NULL; diff --git a/libc/stdio/tmpnam.c b/libc/stdio/tmpnam.c index 88b9bff..ffed862 100644 --- a/libc/stdio/tmpnam.c +++ b/libc/stdio/tmpnam.c @@ -40,7 +40,7 @@ tmpnam (char *s) 0)) return NULL; - if (__builtin_expect (__gen_tempname (tmpbuf, __GT_NOCREATE, 0), 0)) + if (__builtin_expect (__gen_tempname (tmpbuf, __GT_NOCREATE, 0, 0), 0)) return NULL; if (s == NULL) diff --git a/libc/stdio/tmpnam_r.c b/libc/stdio/tmpnam_r.c index 8cde84d..bfd60a4 100644 --- a/libc/stdio/tmpnam_r.c +++ b/libc/stdio/tmpnam_r.c @@ -27,7 +27,7 @@ char * tmpnam_r (char *s) if (__path_search (s, L_tmpnam, NULL, NULL, 0)) return NULL; - if (__gen_tempname (s, __GT_NOCREATE, 0)) + if (__gen_tempname (s, __GT_NOCREATE, 0, 0)) return NULL; return s; diff --git a/libc/stdlib/mkdtemp.c b/libc/stdlib/mkdtemp.c index da7598a..e6d4a36 100644 --- a/libc/stdlib/mkdtemp.c +++ b/libc/stdlib/mkdtemp.c @@ -29,7 +29,7 @@ (This function comes from OpenBSD.) */ char * mkdtemp (char *template) { - if (__gen_tempname (template, __GT_DIR, S_IRUSR | S_IWUSR | S_IXUSR)) + if (__gen_tempname (template, __GT_DIR, 0, S_IRUSR | S_IWUSR | S_IXUSR)) return NULL; else return template; diff --git a/libc/stdlib/mkostemp.c b/libc/stdlib/mkostemp.c index 0369235..912be30 100644 --- a/libc/stdlib/mkostemp.c +++ b/libc/stdlib/mkostemp.c @@ -17,6 +17,7 @@ #include <stdio.h> #include <stdlib.h> +#include <fcntl.h> #include "../misc/internals/tempname.h" /* Generate a unique temporary file name from TEMPLATE. @@ -26,5 +27,6 @@ int mkostemp (char *template, int flags) { - return __gen_tempname (template, __GT_FILE, flags); + flags -= flags & O_ACCMODE; /* Remove O_RDONLY, O_WRONLY, and O_RDWR. */ + return __gen_tempname (template, __GT_FILE, flags, S_IRUSR | S_IWUSR); } diff --git a/libc/stdlib/mkostemp64.c b/libc/stdlib/mkostemp64.c index d21def5..c6d6d84 100644 --- a/libc/stdlib/mkostemp64.c +++ b/libc/stdlib/mkostemp64.c @@ -27,5 +27,5 @@ int mkostemp64 (char *template, int flags) { - return __gen_tempname (template, __GT_BIGFILE, flags | O_LARGEFILE); + return __gen_tempname (template, __GT_BIGFILE, flags | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IXUSR); } diff --git a/libc/stdlib/mkstemp.c b/libc/stdlib/mkstemp.c index 61c7175..a3a1595 100644 --- a/libc/stdlib/mkstemp.c +++ b/libc/stdlib/mkstemp.c @@ -26,5 +26,5 @@ Then open the file and return a fd. */ int mkstemp (char *template) { - return __gen_tempname (template, __GT_FILE, S_IRUSR | S_IWUSR); + return __gen_tempname (template, __GT_FILE, 0, S_IRUSR | S_IWUSR); } diff --git a/libc/stdlib/mkstemp64.c b/libc/stdlib/mkstemp64.c index e29be2d..6f2ee3e 100644 --- a/libc/stdlib/mkstemp64.c +++ b/libc/stdlib/mkstemp64.c @@ -26,5 +26,5 @@ Then open the file and return a fd. */ int mkstemp64 (char *template) { - return __gen_tempname (template, __GT_BIGFILE, S_IRUSR | S_IWUSR); + return __gen_tempname (template, __GT_BIGFILE, 0, S_IRUSR | S_IWUSR); } diff --git a/libc/stdlib/mktemp.c b/libc/stdlib/mktemp.c index edd001d..1ff93da 100644 --- a/libc/stdlib/mktemp.c +++ b/libc/stdlib/mktemp.c @@ -24,7 +24,7 @@ * they are replaced with a string that makes the filename unique. */ char *mktemp(char *template) { - if (__gen_tempname (template, __GT_NOCREATE, 0) < 0) + if (__gen_tempname (template, __GT_NOCREATE, 0, 0) < 0) /* We return the null string if we can't find a unique file name. */ template[0] = '\0'; diff --git a/libc/sysdeps/linux/common/mknod.c b/libc/sysdeps/linux/common/mknod.c index 416cab6..794e19f 100644 --- a/libc/sysdeps/linux/common/mknod.c +++ b/libc/sysdeps/linux/common/mknod.c @@ -24,6 +24,10 @@ int mknod(const char *path, mode_t mode, dev_t dev) /* We must convert the value to dev_t type used by the kernel. */ k_dev = (dev) & ((1ULL << 32) - 1); + if (k_dev != dev) { + __set_errno (EINVAL); + return -1; + } return INLINE_SYSCALL(mknod, 3, path, mode, (unsigned int)k_dev); } #endif diff --git a/libpthread/nptl/sem_open.c b/libpthread/nptl/sem_open.c index 1b36164..3a72079 100644 --- a/libpthread/nptl/sem_open.c +++ b/libpthread/nptl/sem_open.c @@ -336,7 +336,7 @@ sem_open (const char *name, int oflag, ...) mempcpy (mempcpy (tmpfname, mountpoint.dir, mountpoint.dirlen), "XXXXXX", 7); - fd = __gen_tempname (tmpfname, __GT_FILE, mode); + fd = __gen_tempname (tmpfname, __GT_FILE, 0, mode); if (fd == -1) return SEM_FAILED; diff --git a/test/.gitignore b/test/.gitignore index 8f32031..5944f0a 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -274,6 +274,8 @@ stdlib/testarc4random stdlib/testatexit stdlib/test-canon stdlib/test-canon2 +stdlib/test-mkostemp-O_CLOEXEC +stdlib/test-mkostemp-child stdlib/teston_exit stdlib/teststrtol stdlib/teststrtoq diff --git a/test/stdlib/Makefile.in b/test/stdlib/Makefile.in index 0bb0697..b0c724a 100644 --- a/test/stdlib/Makefile.in +++ b/test/stdlib/Makefile.in @@ -5,3 +5,7 @@ DODIFF_qsort := 1 DODIFF_testatexit := 1 DODIFF_teston_exit := 1 DODIFF_teststrtol := 1 + +ifeq ($(ARCH_USE_MMU),) +TESTS_DISABLED := test-mkostemp-O_CLOEXEC +endif diff --git a/test/stdlib/test-mkostemp-O_CLOEXEC.c b/test/stdlib/test-mkostemp-O_CLOEXEC.c new file mode 100644 index 0000000..5652086 --- /dev/null +++ b/test/stdlib/test-mkostemp-O_CLOEXEC.c @@ -0,0 +1,40 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <sys/wait.h> +#include <errno.h> + +int main(int argc, char *argv[]) { + int fd, status; + char buff[5]; + char template[] = "/tmp/test-mkostemp.XXXXXX"; + + fd = mkostemp(template, O_CLOEXEC); + unlink(template); + + snprintf(buff, 5, "%d", fd); + + if(!fork()) + if(execl("./test-mkostemp-child", "test-mkostemp-child", buff, NULL) == -1) + exit(EXIT_FAILURE); + + wait(&status); + + memset(buff, 0, 5); + lseek(fd, 0, SEEK_SET); + errno = 0; + if(read(fd, buff, 5) == -1) + exit(EXIT_FAILURE); + + if(!strncmp(buff, "test", 5)) + exit(EXIT_FAILURE); + else + exit(EXIT_SUCCESS); + + close(fd); + exit(EXIT_SUCCESS); +} diff --git a/test/stdlib/test-mkostemp-child.c b/test/stdlib/test-mkostemp-child.c new file mode 100644 index 0000000..708bd80 --- /dev/null +++ b/test/stdlib/test-mkostemp-child.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +int main(int argc, char *argv[]) { + int fd; + + /* This file gets built and run as a test, but its + * really just a helper for test-mkostemp-O_CLOEXEC.c. + * So, we'll always return succcess. + */ + if(argc != 2) + exit(EXIT_SUCCESS); + + sscanf(argv[1], "%d", &fd); + + if(write(fd, "test\0", 5) == -1) + ; /* Don't Panic! Failure is okay here. */ + + close(fd); + exit(EXIT_SUCCESS); +} hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
uClibc-ng - small C library for embedded systems branch master updated. 86087816201d61f1b72d8bd7d91cfc7eb26422e9
by wbx@helium.waldemar-brodkorb.de 09 Dec '14

09 Dec '14
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems". The branch, master has been updated via 86087816201d61f1b72d8bd7d91cfc7eb26422e9 (commit) via ffc0bd03c4c41725ed2eee2fdea296eb42d26496 (commit) from ef0e534fda812f90815b945a9dde79f318e24e14 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 86087816201d61f1b72d8bd7d91cfc7eb26422e9 Merge: ef0e534 ffc0bd0 Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org> Date: Tue Dec 9 15:06:31 2014 +0100 Merge remote-tracking branch 'origin/upstream' ----------------------------------------------------------------------- Summary of changes: include/signal.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/signal.h b/include/signal.h index edd7a97..be24cf3 100644 --- a/include/signal.h +++ b/include/signal.h @@ -98,7 +98,9 @@ typedef __uid_t uid_t; /* We need `struct timespec' later on. */ # define __need_timespec # include <time.h> +#endif +#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED /* Get the `siginfo_t' type plus the needed symbols. */ # include <bits/siginfo.h> #endif hooks/post-receive -- uClibc-ng - small C library for embedded systems
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.