From 9b7d191055ade5069c6325fa857e007b4c658b14 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 18 Oct 2000 23:38:13 +0000 Subject: More updates. Implement strsignal. Add pwd_grp tests --- test/Makefile | 2 +- test/pwd_grp/.cvsignore | 6 +++ test/pwd_grp/.indent.pro | 33 ++++++++++++++ test/pwd_grp/Makefile | 87 +++++++++++++++++++++++++++++++++++ test/pwd_grp/test_grp.c | 100 ++++++++++++++++++++++++++++++++++++++++ test/pwd_grp/test_pwd.c | 87 +++++++++++++++++++++++++++++++++++ test/signal/.indent.pro | 33 ++++++++++++++ test/signal/signal.c | 116 ++++++++++++++++++++++++----------------------- test/stdlib/Makefile | 2 +- 9 files changed, 407 insertions(+), 59 deletions(-) create mode 100644 test/pwd_grp/.cvsignore create mode 100644 test/pwd_grp/.indent.pro create mode 100644 test/pwd_grp/Makefile create mode 100644 test/pwd_grp/test_grp.c create mode 100644 test/pwd_grp/test_pwd.c create mode 100644 test/signal/.indent.pro (limited to 'test') diff --git a/test/Makefile b/test/Makefile index 5c647822b..ebc60523d 100644 --- a/test/Makefile +++ b/test/Makefile @@ -20,7 +20,7 @@ # other sundry sources. Files within this library are copyright by their # respective copyright holders. -DIRS = assert ctype silly stdlib string +DIRS = assert ctype pwd_grp signal silly stdlib string all: subdirs tags: diff --git a/test/pwd_grp/.cvsignore b/test/pwd_grp/.cvsignore new file mode 100644 index 000000000..b2b052525 --- /dev/null +++ b/test/pwd_grp/.cvsignore @@ -0,0 +1,6 @@ +test_grp +test_grp.o +test_grp.out +test_grp_glibc +test_grp_glibc.o +test_grp_glibc.out diff --git a/test/pwd_grp/.indent.pro b/test/pwd_grp/.indent.pro new file mode 100644 index 000000000..492ecf1c7 --- /dev/null +++ b/test/pwd_grp/.indent.pro @@ -0,0 +1,33 @@ +--blank-lines-after-declarations +--blank-lines-after-procedures +--break-before-boolean-operator +--no-blank-lines-after-commas +--braces-on-if-line +--braces-on-struct-decl-line +--comment-indentation25 +--declaration-comment-column25 +--no-comment-delimiters-on-blank-lines +--cuddle-else +--continuation-indentation4 +--case-indentation0 +--else-endif-column33 +--space-after-cast +--line-comments-indentation0 +--declaration-indentation1 +--dont-format-first-column-comments +--dont-format-comments +--honour-newlines +--indent-level4 +/* changed from 0 to 4 */ +--parameter-indentation4 +--line-length78 /* changed from 75 */ +--continue-at-parentheses +--no-space-after-function-call-names +--dont-break-procedure-type +--dont-star-comments +--leave-optional-blank-lines +--dont-space-special-semicolon +--tab-size4 +/* additions by Mark */ +--case-brace-indentation0 +--leave-preprocessor-space diff --git a/test/pwd_grp/Makefile b/test/pwd_grp/Makefile new file mode 100644 index 000000000..bfeb0e652 --- /dev/null +++ b/test/pwd_grp/Makefile @@ -0,0 +1,87 @@ +TOPDIR=../../ +include $(TOPDIR)Rules.mak + +# Check if 'ls -sh' works or not +LSFLAGS = $(shell if ls -sh >/dev/null 2>&1; \ + then echo "-sh"; else echo "-s" ; fi) + +XCFLAGS = -Wall -Os -fomit-frame-pointer -fno-builtin -nostdinc \ + -I$(TOPDIR)include -I/usr/include/linux +XLDFLAGS = -nostdlib -s -gc-sections +EXTRA_LIBS=$(TOPDIR)libc.a + +YCFLAGS = -Wall -Os -fomit-frame-pointer +YLDFLAGS = -s --static + +# Allow alternative stripping tools to be used... +ifndef $(STRIPTOOL) + STRIPTOOL = strip +endif +STRIP = $(STRIPTOOL) --remove-section=.note --remove-section=.comment $@ + +TARGETS=test_pwd test_pwd_glibc +TARGETS+=test_grp test_grp_glibc +TARGETS+=test_pwd_diff test_grp_diff + +all: $(TARGETS) + +test_pwd: test_pwd.c Makefile $(TOPDIR)libc.a + -@ echo "-------" + -@ echo " " + -@ echo "Compiling vs uCLibc: " + -@ echo " " + $(CC) $(XCFLAGS) -c $< -o $@.o + $(CC) $(XLDFLAGS) $@.o -o $@ $(EXTRA_LIBS) + -./$@ 2>&1 >test_pwd.out + -@ echo " " + +test_pwd_glibc: test_pwd.c Makefile $(TOPDIR)libc.a + -@ echo "-------" + -@ echo " " + -@ echo "Compiling vs GNU libc: " + -@ echo " " + $(CC) $(YCFLAGS) -c $< -o $@.o + $(CC) $(YLDFLAGS) --static $@.o -o $@ + -./$@ 2>&1 >test_pwd_glibc.out + -@ echo " " + +test_grp: test_grp.c Makefile $(TOPDIR)libc.a + -@ echo "-------" + -@ echo " " + -@ echo "Compiling vs uCLibc: " + -@ echo " " + $(CC) $(XCFLAGS) -c $< -o $@.o + $(CC) $(XLDFLAGS) $@.o -o $@ $(EXTRA_LIBS) + -./$@ 2>&1 >test_grp.out + -@ echo " " + +test_grp_glibc: test_grp.c Makefile $(TOPDIR)libc.a + -@ echo "-------" + -@ echo " " + -@ echo "Compiling vs GNU libc: " + -@ echo " " + $(CC) $(YCFLAGS) -c $< -o $@.o + $(CC) $(YLDFLAGS) --static $@.o -o $@ + -./$@ 2>&1 >test_grp_glibc.out + -@ echo " " + +test_pwd_diff: test_pwd_glibc test_pwd + -@ echo "-------" + -@ echo " " + -@ echo "Diffing output: " + -@ echo " " + -diff -u test_pwd_glibc.out test_pwd.out + -@ echo " " + +test_grp_diff: test_grp_glibc test_grp + -@ echo "-------" + -@ echo " " + -@ echo "Diffing output: " + -@ echo " " + -diff -u test_grp_glibc.out test_grp.out + -@ echo " " + +clean: + rm -f *.[oa] *~ core $(TARGETS) *.out + + diff --git a/test/pwd_grp/test_grp.c b/test/pwd_grp/test_grp.c new file mode 100644 index 000000000..0e9c4a013 --- /dev/null +++ b/test/pwd_grp/test_grp.c @@ -0,0 +1,100 @@ +/* + * test_grp.c - This file is part of the libc-8086/grp package for ELKS, + * Copyright (C) 1995, 1996 Nat Friedman . + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + struct group *group; + char **tmp_mem; + int test_gid; + + fprintf(stdout, "Beginning test of libc/grp...\n"); + + fprintf(stdout, "=> Testing setgrent(), getgrent(), endgrent()...\n"); + fprintf(stdout, "-> setgrent()...\n"); + setgrent(); + fprintf(stdout, "-> getgrent()...\n"); + printf + ("********************************************************************************\n"); + while ((group = getgrent()) != NULL) { + printf("gr_name\t\t: %s\n", group->gr_name); + printf("gr_passwd\t: %s\n", group->gr_passwd); + printf("gr_gid\t\t: %d\n", (int) group->gr_gid); + printf("gr_mem\t\t: "); + fflush(stdout); + tmp_mem = group->gr_mem; + while (*tmp_mem != NULL) { + printf("%s, ", *tmp_mem); + tmp_mem++; + } + printf + ("\n********************************************************************************\n"); + } + fprintf(stdout, "-> endgrent()...\n"); + endgrent(); + fprintf(stdout, + "=> Test of setgrent(), getgrent(), endgrent() complete.\n"); + fprintf(stdout, "=> Testing getgrid(), getgrnam()...\n"); + fprintf(stdout, "-> getgrgid()...\n"); + printf + ("********************************************************************************\n"); + for (test_gid = 0; test_gid < 100; test_gid++) { + fprintf(stdout, "-> getgrgid(%d)...\n", test_gid); + group = getgrgid((gid_t) test_gid); + if (group != NULL) { + printf("gr_name\t: %s\n", group->gr_name); + printf("gr_passwd\t: %s\n", group->gr_passwd); + printf("gr_gid\t: %d\n", (int) group->gr_gid); + printf("gr_mem\t\t: "); + fflush(stdout); + tmp_mem = group->gr_mem; + while (*tmp_mem != NULL) { + printf("%s, ", *tmp_mem); + tmp_mem++; + } + } + printf + ("\n********************************************************************************\n"); + } + fprintf(stdout, "-> getgrnam()...\n"); + group = getgrnam("root"); + if (group == NULL) { + printf(">NULL<\n"); + } else { + printf("gr_name\t: %s\n", group->gr_name); + printf("gr_passwd\t: %s\n", group->gr_passwd); + printf("gr_gid\t: %d\n", (int) group->gr_gid); + printf("gr_mem\t\t: "); + fflush(stdout); + tmp_mem = group->gr_mem; + while (*tmp_mem != NULL) { + printf("%s, ", *tmp_mem); + tmp_mem++; + } + printf("\n"); + } + + + return 0; +} diff --git a/test/pwd_grp/test_pwd.c b/test/pwd_grp/test_pwd.c new file mode 100644 index 000000000..9d2186695 --- /dev/null +++ b/test/pwd_grp/test_pwd.c @@ -0,0 +1,87 @@ +/* + * test_pwd.c - This file is part of the libc-8086/pwd package for ELKS, + * Copyright (C) 1995, 1996 Nat Friedman . + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + struct passwd *passwd; + int test_uid; + + fprintf(stdout, "Beginning test of libc/pwd...\n"); + + fprintf(stdout, "=> Testing setpwent(), getpwent(), endpwent()...\n"); + fprintf(stdout, "-> setpwent()...\n"); + setpwent(); + fprintf(stdout, "-> getpwent()...\n"); + printf + ("********************************************************************************\n"); + while ((passwd = getpwent()) != NULL) { + printf("pw_name\t\t: %s\n", passwd->pw_name); + printf("pw_passwd\t: %s\n", passwd->pw_passwd); + printf("pw_uid\t\t: %d\n", (int) passwd->pw_uid); + printf("pw_gid\t\t: %d\n", (int) passwd->pw_gid); + printf("pw_gecos\t: %s\n", passwd->pw_gecos); + printf("pw_dir\t\t: %s\n", passwd->pw_dir); + printf("pw_shell\t: %s\n", passwd->pw_shell); + printf + ("********************************************************************************\n"); + } + fprintf(stdout, "-> endpwent()...\n"); + endpwent(); + fprintf(stdout, + "=> Test of setpwent(), getpwent(), endpwent() complete.\n"); + fprintf(stdout, "=> Testing getpwuid(), getpwnam()...\n"); + fprintf(stdout, "-> getpwuid()...\n"); + printf + ("********************************************************************************\n"); + for (test_uid = 0; test_uid < 1000; test_uid++) { + fprintf(stdout, "-> getpwuid(%d)...\n", test_uid); + passwd = getpwuid((uid_t) test_uid); + if (passwd != NULL) { + printf("pw_name\t\t: %s\n", passwd->pw_name); + printf("pw_passwd\t: %s\n", passwd->pw_passwd); + printf("pw_uid\t\t: %d\n", (int) passwd->pw_uid); + printf("pw_gid\t\t: %d\n", (int) passwd->pw_gid); + printf("pw_gecos\t: %s\n", passwd->pw_gecos); + printf("pw_dir\t\t: %s\n", passwd->pw_dir); + printf("pw_shell\t: %s\n", passwd->pw_shell); + printf + ("********************************************************************************\n"); + } + } + fprintf(stdout, "-> getpwnam()...\n"); + passwd = getpwnam("root"); + if (passwd == NULL) { + printf(">NULL<\n"); + } else { + printf("pw_name\t\t: %s\n", passwd->pw_name); + printf("pw_passwd\t: %s\n", passwd->pw_passwd); + printf("pw_uid\t\t: %d\n", (int) passwd->pw_uid); + printf("pw_gid\t\t: %d\n", (int) passwd->pw_gid); + printf("pw_gecos\t: %s\n", passwd->pw_gecos); + printf("pw_dir\t\t: %s\n", passwd->pw_dir); + printf("pw_shell\t: %s\n", passwd->pw_shell); + } + return 0; +} diff --git a/test/signal/.indent.pro b/test/signal/.indent.pro new file mode 100644 index 000000000..492ecf1c7 --- /dev/null +++ b/test/signal/.indent.pro @@ -0,0 +1,33 @@ +--blank-lines-after-declarations +--blank-lines-after-procedures +--break-before-boolean-operator +--no-blank-lines-after-commas +--braces-on-if-line +--braces-on-struct-decl-line +--comment-indentation25 +--declaration-comment-column25 +--no-comment-delimiters-on-blank-lines +--cuddle-else +--continuation-indentation4 +--case-indentation0 +--else-endif-column33 +--space-after-cast +--line-comments-indentation0 +--declaration-indentation1 +--dont-format-first-column-comments +--dont-format-comments +--honour-newlines +--indent-level4 +/* changed from 0 to 4 */ +--parameter-indentation4 +--line-length78 /* changed from 75 */ +--continue-at-parentheses +--no-space-after-function-call-names +--dont-break-procedure-type +--dont-star-comments +--leave-optional-blank-lines +--dont-space-special-semicolon +--tab-size4 +/* additions by Mark */ +--case-brace-indentation0 +--leave-preprocessor-space diff --git a/test/signal/signal.c b/test/signal/signal.c index fc411a1b9..9198af5f6 100644 --- a/test/signal/signal.c +++ b/test/signal/signal.c @@ -1,21 +1,25 @@ -/* Tester for string functions. - Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ +/* vi: set sw=4 ts=4: */ +/* + * signal testing function for uC-Libc + * + * Copyright (C) 2000 by Lineo, inc. + * Written by Erik Andersen , + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ #include @@ -30,21 +34,20 @@ /* -------------------------------------------------*/ /* This stuff is common to all the testing routines */ /* -------------------------------------------------*/ -const char *it = ""; /* Routine name for message routines. */ +const char *it = ""; /* Routine name for message routines. */ size_t errors = 0; -void check (int thing, int number) +void check(int thing, int number) { - if (!thing) - { - printf("%s flunked test %d\n", it, number); - ++errors; - } + if (!thing) { + printf("%s: flunked test %d\n", it, number); + ++errors; + } } -void equal (const char *a, const char *b, int number) +void equal(const char *a, const char *b, int number) { - check(a != NULL && b != NULL && (strcmp(a, b)==0), number); + check(a != NULL && b != NULL && (strcmp(a, b) == 0), number); } @@ -56,43 +59,42 @@ int global_int = 0; void set_global_int_to_one(int signum) { - printf("entering set_global_int_to_one\n"); - global_int = 1; - return; + printf ("Received signal %d (%s).\n", signum, strsignal(signum)); + global_int = 1; + return; } -void -signal_test_1 (void) +void signal_test_1(void) { - global_int = 0; + global_int = 0; + + it = "global variable set from signal handler"; + signal(SIGUSR1, set_global_int_to_one); + raise(SIGUSR1); - signal(SIGUSR1, set_global_int_to_one); - raise( SIGUSR1); - /* This should have first jumped to the signal handler */ - check ( (global_int == 0), 0); + /* This should already have jumped to the signal handler */ + check((global_int == 1), 1); - signal(SIGUSR1, SIG_DFL); - raise( SIGUSR1); - printf("Here I am.\n"); + global_int = 0; + signal(SIGUSR1, SIG_IGN); + raise(SIGUSR1); + /* This should not go to the signal handler this time since we */ + check((global_int == 0), 1); } -int -main (void) +int main(void) { - int status; - - signal_test_1 (); - - if (errors == 0) - { - status = EXIT_SUCCESS; - printf("No errors.\n"); - } - else - { - status = EXIT_FAILURE; - printf("%d errors.\n", errors); - } - exit(status); + int status; + + signal_test_1(); + + if (errors == 0) { + status = EXIT_SUCCESS; + printf("No errors.\n"); + } else { + status = EXIT_FAILURE; + printf("%d errors.\n", errors); + } + exit(status); } diff --git a/test/stdlib/Makefile b/test/stdlib/Makefile index d33f3f6ca..0140739d7 100644 --- a/test/stdlib/Makefile +++ b/test/stdlib/Makefile @@ -1,5 +1,5 @@ TOPDIR=../../ -include $(TOPDIR)Rules.make +include $(TOPDIR)Rules.mak # Check if 'ls -sh' works or not LSFLAGS = $(shell if ls -sh >/dev/null 2>&1; \ -- cgit v1.2.3