1*ace5b9b5Schristos /* $NetBSD: servent.h,v 1.5 2024/01/20 14:52:48 christos Exp $ */ 24e3cae58Skleink 34e3cae58Skleink /*- 44e3cae58Skleink * Copyright (c) 2004 The NetBSD Foundation, Inc. 54e3cae58Skleink * All rights reserved. 64e3cae58Skleink * 74e3cae58Skleink * This code is derived from software contributed to The NetBSD Foundation 84e3cae58Skleink * by Christos Zoulas. 94e3cae58Skleink * 104e3cae58Skleink * Redistribution and use in source and binary forms, with or without 114e3cae58Skleink * modification, are permitted provided that the following conditions 124e3cae58Skleink * are met: 134e3cae58Skleink * 1. Redistributions of source code must retain the above copyright 144e3cae58Skleink * notice, this list of conditions and the following disclaimer. 154e3cae58Skleink * 2. Redistributions in binary form must reproduce the above copyright 164e3cae58Skleink * notice, this list of conditions and the following disclaimer in the 174e3cae58Skleink * documentation and/or other materials provided with the distribution. 184e3cae58Skleink * 194e3cae58Skleink * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 204e3cae58Skleink * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 214e3cae58Skleink * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 224e3cae58Skleink * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 234e3cae58Skleink * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 244e3cae58Skleink * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 254e3cae58Skleink * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 264e3cae58Skleink * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 274e3cae58Skleink * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 284e3cae58Skleink * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 294e3cae58Skleink * POSSIBILITY OF SUCH DAMAGE. 304e3cae58Skleink */ 314e3cae58Skleink 324e3cae58Skleink #include <stdio.h> 33*ace5b9b5Schristos #ifdef _REENTRANT 34*ace5b9b5Schristos #include "reentrant.h" 35*ace5b9b5Schristos #endif 364e3cae58Skleink 374e3cae58Skleink struct servent_data { 38b9cf7d31Sjoerg FILE *plainfile; 39b9cf7d31Sjoerg struct cdbr *cdb; 404e3cae58Skleink struct servent serv; 414e3cae58Skleink char **aliases; 424e3cae58Skleink size_t maxaliases; 43754fca0eSchristos int flags; 44754fca0eSchristos #define _SV_STAYOPEN 1 45b9cf7d31Sjoerg #define _SV_CDB 2 46b9cf7d31Sjoerg #define _SV_PLAINFILE 4 47b9cf7d31Sjoerg #define _SV_FIRST 8 48b9cf7d31Sjoerg uint32_t cdb_index; 49b9cf7d31Sjoerg uint8_t *cdb_buf; 50b9cf7d31Sjoerg size_t cdb_buf_len; 514e3cae58Skleink char *line; 524e3cae58Skleink void *dummy; 534e3cae58Skleink }; 544e3cae58Skleink 55*ace5b9b5Schristos #ifdef _REENTRANT 56*ace5b9b5Schristos extern mutex_t _servent_mutex; 57*ace5b9b5Schristos #endif 58*ace5b9b5Schristos extern struct servent_data _servent_data; 59*ace5b9b5Schristos 604e3cae58Skleink struct servent *getservent_r(struct servent *, struct servent_data *); 614e3cae58Skleink struct servent *getservbyname_r(const char *, const char *, 624e3cae58Skleink struct servent *, struct servent_data *); 634e3cae58Skleink struct servent *getservbyport_r(int, const char *, 644e3cae58Skleink struct servent *, struct servent_data *); 654e3cae58Skleink void setservent_r(int, struct servent_data *); 664e3cae58Skleink void endservent_r(struct servent_data *); 67754fca0eSchristos 68754fca0eSchristos int _servent_open(struct servent_data *); 69754fca0eSchristos void _servent_close(struct servent_data *); 70754fca0eSchristos int _servent_getline(struct servent_data *); 71754fca0eSchristos struct servent *_servent_parseline(struct servent_data *, struct servent *); 72b9cf7d31Sjoerg struct servent *_servent_parsedb(struct servent_data *, struct servent *, 73b9cf7d31Sjoerg const uint8_t *, size_t); 74