diff options
author | nalin <nalin> | 2002-11-18 22:05:08 +0000 |
---|---|---|
committer | nalin <nalin> | 2002-11-18 22:05:08 +0000 |
commit | dbf919855d755917146a86ab4e3201041ade0332 (patch) | |
tree | 07af350ac300b38df79a96f11ff80f729644613d /src/services.c | |
parent | 4e355429e4b3f16de43ef0ac94eafe0a820b0406 (diff) | |
download | nss_directories-dbf919855d755917146a86ab4e3201041ade0332.tar.gz nss_directories-dbf919855d755917146a86ab4e3201041ade0332.tar.xz nss_directories-dbf919855d755917146a86ab4e3201041ade0332.zip |
* src/files-parse.c, src/glibc-parse.c: add glibc-based parsing internally
* src/passwd.c,src/services.c,src/group.c,src/protocols.c,src/shadow.c: use
the new parsing code
* src/generic.c (setent): return SUCCESS on successful open, not UNAVAIL
* src/Makefile.am: export only _nss_directories_[sge]*, to export the setent,
getent/getby, and endent functions, but not the parsers.
Diffstat (limited to 'src/services.c')
-rw-r--r-- | src/services.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/services.c b/src/services.c index 1ca091f..51ceb34 100644 --- a/src/services.c +++ b/src/services.c @@ -16,14 +16,37 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ident "$Id: services.c,v 1.1 2002/11/18 19:53:21 nalin Exp $" +#ident "$Id: services.c,v 1.2 2002/11/18 22:08:14 nalin Exp $" #include <sys/types.h> #include <netdb.h> +/* Shared settings. */ #define STRUCTURE servent -#define FILENAME "services" +#define DATABASE "services" +/* Parser. */ +#define ENTNAME servent +struct servent_data {}; + +#define libc_hidden_def(ignored) +#define _nss_files_parse_ _nss_directories_parse_ + +#define TRAILING_LIST_MEMBER s_aliases +#define TRAILING_LIST_SEPARATOR_P isspace + +#include "files-parse.c" + +#define ISSLASH(__c) ((__c) == '/') + +LINE_PARSER +("#", + STRING_FIELD (result->s_name, isspace, 1); + INT_FIELD (result->s_port, ISSLASH, 10, 0, htons); + STRING_FIELD (result->s_proto, isspace, 1); +) + +/* Lookups. */ #define getnam _nss_directories_getservbyname_r #define getnam_field s_name #define getnam_fields s_aliases @@ -36,8 +59,6 @@ #define getent _nss_directories_getservent_r #define endent _nss_directories_endservent -#define parser _nss_files_parse_servent - #define GET_EXTRA_CRITERIA const char *protocol #define EXTRA_CRITERIA_NAMES protocol #define CHECK_EXTRA_CRITERIA(__s) (((__s)->s_proto != NULL) && strcmp((__s)->s_proto, protocol) == 0) |