From 9b63a8ac404733851798680da1dc9f53ee70b64c Mon Sep 17 00:00:00 2001 From: Arjun Shankar Date: Mon, 2 Oct 2023 14:55:25 +0200 Subject: Move 'rpc' routines from 'inet' into 'nss' The getrpcby* and getrpcent* routines are entry points for nss functionality. This commit moves them from the 'inet' subdirectory to 'nss'. The Versions entries for these routines along with a test, located in the 'sunrpc' subdirectory, are also moved into 'nss'. Reviewed-by: Adhemerval Zanella --- nss/Makefile | 16 +++++++++++ nss/Versions | 2 ++ nss/getrpcbyname.c | 31 +++++++++++++++++++++ nss/getrpcbyname_r.c | 30 ++++++++++++++++++++ nss/getrpcbynumber.c | 31 +++++++++++++++++++++ nss/getrpcbynumber_r.c | 30 ++++++++++++++++++++ nss/getrpcent.c | 28 +++++++++++++++++++ nss/getrpcent_r.c | 32 ++++++++++++++++++++++ nss/test-rpcent.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 274 insertions(+) create mode 100644 nss/getrpcbyname.c create mode 100644 nss/getrpcbyname_r.c create mode 100644 nss/getrpcbynumber.c create mode 100644 nss/getrpcbynumber_r.c create mode 100644 nss/getrpcent.c create mode 100644 nss/getrpcent_r.c create mode 100644 nss/test-rpcent.c (limited to 'nss') diff --git a/nss/Makefile b/nss/Makefile index df22d3655c..cbfd5dc692 100644 --- a/nss/Makefile +++ b/nss/Makefile @@ -214,6 +214,21 @@ CFLAGS-getpwent.c += -fexceptions CFLAGS-getpwent_r.c += -fexceptions endif +# rpc routines: +routines += \ + getrpcbyname \ + getrpcbyname_r \ + getrpcbynumber \ + getrpcbynumber_r \ + getrpcent \ + getrpcent_r \ + # routines + +ifeq ($(have-thread-library),yes) +CFLAGS-getrpcent_r.c += -fexceptions +CFLAGS-getrpcent.c += -fexceptions +endif + # shadow routines routines += \ fgetspent \ @@ -276,6 +291,7 @@ tests := \ bug17079 \ test-digits-dots \ test-netdb \ + test-rpcent \ testgrp \ tst-fgetsgent_r \ tst-gethnm \ diff --git a/nss/Versions b/nss/Versions index c5de97fb53..b7491154bf 100644 --- a/nss/Versions +++ b/nss/Versions @@ -30,6 +30,8 @@ libc { getprotobyname; getprotobyname_r; getprotobynumber; getprotobynumber_r; getprotoent; getprotoent_r; getpw; getpwent; getpwent_r; getpwnam; getpwnam_r; getpwuid; getpwuid_r; + getrpcbyname; getrpcbyname_r; getrpcbynumber; getrpcbynumber_r; + getrpcent; getrpcent_r; getspent; getspent_r; getspnam; getspnam_r; # i* diff --git a/nss/getrpcbyname.c b/nss/getrpcbyname.c new file mode 100644 index 0000000000..ef2114b726 --- /dev/null +++ b/nss/getrpcbyname.c @@ -0,0 +1,31 @@ +/* Copyright (C) 1996-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + +#define LOOKUP_TYPE struct rpcent +#define FUNCTION_NAME getrpcbyname +#define DATABASE_NAME rpc +#define ADD_PARAMS const char *name +#define ADD_VARIABLES name +#define BUFLEN 1024 + +/* There is no nscd support for the rpc file. */ +#undef USE_NSCD + +#include "../nss/getXXbyYY.c" diff --git a/nss/getrpcbyname_r.c b/nss/getrpcbyname_r.c new file mode 100644 index 0000000000..c1a383a407 --- /dev/null +++ b/nss/getrpcbyname_r.c @@ -0,0 +1,30 @@ +/* Copyright (C) 1996-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + +#define LOOKUP_TYPE struct rpcent +#define FUNCTION_NAME getrpcbyname +#define DATABASE_NAME rpc +#define ADD_PARAMS const char *name +#define ADD_VARIABLES name + +/* There is no nscd support for the rpc file. */ +#undef USE_NSCD + +#include "../nss/getXXbyYY_r.c" diff --git a/nss/getrpcbynumber.c b/nss/getrpcbynumber.c new file mode 100644 index 0000000000..0689a363fb --- /dev/null +++ b/nss/getrpcbynumber.c @@ -0,0 +1,31 @@ +/* Copyright (C) 1996-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + +#define LOOKUP_TYPE struct rpcent +#define FUNCTION_NAME getrpcbynumber +#define DATABASE_NAME rpc +#define ADD_PARAMS int number +#define ADD_VARIABLES number +#define BUFLEN 1024 + +/* There is no nscd support for the rpc file. */ +#undef USE_NSCD + +#include "../nss/getXXbyYY.c" diff --git a/nss/getrpcbynumber_r.c b/nss/getrpcbynumber_r.c new file mode 100644 index 0000000000..eb2ce8ff79 --- /dev/null +++ b/nss/getrpcbynumber_r.c @@ -0,0 +1,30 @@ +/* Copyright (C) 1996-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + +#define LOOKUP_TYPE struct rpcent +#define FUNCTION_NAME getrpcbynumber +#define DATABASE_NAME rpc +#define ADD_PARAMS int number +#define ADD_VARIABLES number + +/* There is no nscd support for the rpc file. */ +#undef USE_NSCD + +#include "../nss/getXXbyYY_r.c" diff --git a/nss/getrpcent.c b/nss/getrpcent.c new file mode 100644 index 0000000000..511cd533a6 --- /dev/null +++ b/nss/getrpcent.c @@ -0,0 +1,28 @@ +/* Copyright (C) 1996-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + +#define LOOKUP_TYPE struct rpcent +#define GETFUNC_NAME getrpcent +#define BUFLEN 1024 + +/* There is no nscd support for the rpc file. */ +#undef USE_NSCD + +#include "../nss/getXXent.c" diff --git a/nss/getrpcent_r.c b/nss/getrpcent_r.c new file mode 100644 index 0000000000..4df706ca0f --- /dev/null +++ b/nss/getrpcent_r.c @@ -0,0 +1,32 @@ +/* Copyright (C) 1996-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + + +#define LOOKUP_TYPE struct rpcent +#define SETFUNC_NAME setrpcent +#define GETFUNC_NAME getrpcent +#define ENDFUNC_NAME endrpcent +#define DATABASE_NAME rpc +#define STAYOPEN int stayopen +#define STAYOPEN_VAR stayopen + +/* There is no nscd support for the rpc file. */ +#undef USE_NSCD + +#include "../nss/getXXent_r.c" diff --git a/nss/test-rpcent.c b/nss/test-rpcent.c new file mode 100644 index 0000000000..a3b1a21893 --- /dev/null +++ b/nss/test-rpcent.c @@ -0,0 +1,74 @@ +/* Test getrpcent and friends. + Copyright (C) 2015-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* This is taken from nss/test-netdb.c and is intended to follow that + test's model for everything. This test is separate only because + the interfaces do not exist in configurations that + omit sunrpc/ from the build. */ + +#include +#include + + +static void +output_rpcent (const char *call, struct rpcent *rptr) +{ + char **pptr; + + if (rptr == NULL) + printf ("Call: %s returned NULL\n", call); + else + { + printf ("Call: %s, returned: r_name: %s, r_number: %d\n", + call, rptr->r_name, rptr->r_number); + for (pptr = rptr->r_aliases; *pptr != NULL; pptr++) + printf (" alias: %s\n", *pptr); + } +} + +static void +test_rpc (void) +{ + struct rpcent *rptr; + + rptr = getrpcbyname ("portmap"); + output_rpcent ("getrpcyname (\"portmap\")", rptr); + + rptr = getrpcbynumber (100000); + output_rpcent ("getrpcbynumber (100000)", rptr); + + setrpcent (0); + do + { + rptr = getrpcent (); + output_rpcent ("getrpcent ()", rptr); + } + while (rptr != NULL); + endrpcent (); +} + +static int +do_test (void) +{ + test_rpc (); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" -- cgit 1.4.1