diff options
author | Sascha Schumann <sas@php.net> | 1999-05-21 08:29:51 +0000 |
---|---|---|
committer | Sascha Schumann <sas@php.net> | 1999-05-21 08:29:51 +0000 |
commit | 6f06b1167927411909b1c9490cacf3de453fc6bf (patch) | |
tree | 0c0a7430e4e76879dbfba488e97c443d8ae5bbac /ext/yp | |
parent | fb407676a29912710690532e92a3a4433cc14ff6 (diff) | |
download | php-git-6f06b1167927411909b1c9490cacf3de453fc6bf.tar.gz |
incorporate YP/NIS support
Diffstat (limited to 'ext/yp')
-rw-r--r-- | ext/yp/Makefile.am | 6 | ||||
-rw-r--r-- | ext/yp/config.h.stub | 5 | ||||
-rw-r--r-- | ext/yp/config.m4 | 29 | ||||
-rw-r--r-- | ext/yp/php3_yp.h | 62 | ||||
-rw-r--r-- | ext/yp/setup.stub | 6 | ||||
-rw-r--r-- | ext/yp/yp.c | 191 |
6 files changed, 299 insertions, 0 deletions
diff --git a/ext/yp/Makefile.am b/ext/yp/Makefile.am new file mode 100644 index 0000000000..c3701cf6ba --- /dev/null +++ b/ext/yp/Makefile.am @@ -0,0 +1,6 @@ +# $Id$ + +INCLUDES=@INCLUDES@ -I@top_srcdir@ -I@top_srcdir@/libzend +noinst_LIBRARIES=libphpext_yp.a +libphpext_yp_a_SOURCES=yp.c + diff --git a/ext/yp/config.h.stub b/ext/yp/config.h.stub new file mode 100644 index 0000000000..768e64e5a9 --- /dev/null +++ b/ext/yp/config.h.stub @@ -0,0 +1,5 @@ +/* define if you want to use the yp extension */ +/* #undef HAVE_LIBYP */ + +#undef HAVE_YP +#undef SOLARIS_YP diff --git a/ext/yp/config.m4 b/ext/yp/config.m4 new file mode 100644 index 0000000000..6fd01b3a1e --- /dev/null +++ b/ext/yp/config.m4 @@ -0,0 +1,29 @@ +dnl $Id$ +dnl config.m4 for extension yp +dnl don't forget to call PHP_EXTENSION(yp) + +AC_MSG_CHECKING(whether to include YP support) +AC_ARG_WITH(yp, +[ --with-yp Include YP support], +[ + if test "$withval" = "yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_YP) + PHP_EXTENSION(yp) + if test `uname` = "SunOS";then + release=`uname -r` + case "$release" in + 5*) + AC_DEFINE(SOLARIS_YP) + ;; + *) + ;; + esac + fi + else + AC_MSG_RESULT(no) + fi +],[ + AC_MSG_RESULT(no) +]) + diff --git a/ext/yp/php3_yp.h b/ext/yp/php3_yp.h new file mode 100644 index 0000000000..1059314293 --- /dev/null +++ b/ext/yp/php3_yp.h @@ -0,0 +1,62 @@ +/* + +----------------------------------------------------------------------+ + | PHP HTML Embedded Scripting Language Version 3.0 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-1999 PHP Development Team (See Credits file) | + +----------------------------------------------------------------------+ + | This program is free software; you can redistribute it and/or modify | + | it under the terms of one of the following licenses: | + | | + | A) 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. | + | | + | B) the PHP License as published by the PHP Development Team and | + | included in the distribution in the file: LICENSE | + | | + | 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 both licenses referred to here. | + | If you did not, or have any questions about PHP licensing, please | + | contact core@php.net. | + +----------------------------------------------------------------------+ + | Authors: Stephanie Wehner <_@r4k.net> | + +----------------------------------------------------------------------+ + */ +/* $Id$ */ + +#ifndef _PHP3_YP_H +#define _PHP3_YP_H + +#if COMPILE_DL +#undef HAVE_YP +#define HAVE_YP 1 +#endif + +#if HAVE_YP + +extern php3_module_entry yp_module_entry; +#define yp_module_ptr &yp_module_entry + +/* yp.c functions */ +int php3_minit_yp(INIT_FUNC_ARGS); +PHP_FUNCTION(yp_get_default_domain); +PHP_FUNCTION(yp_order); +PHP_FUNCTION(yp_master); +PHP_FUNCTION(yp_match); +PHP_FUNCTION(yp_first); +PHP_FUNCTION(yp_next); +void php3_info_yp(ZEND_MODULE_INFO_FUNC_ARGS); + +#else + +#define yp_module_ptr NULL + +#endif /* HAVE_YP */ + +#define phpext_yp_ptr yp_module_ptr + +#endif /* _PHP3_YP_H */ diff --git a/ext/yp/setup.stub b/ext/yp/setup.stub new file mode 100644 index 0000000000..f91adef610 --- /dev/null +++ b/ext/yp/setup.stub @@ -0,0 +1,6 @@ +# $Source$ +# $Id$ + +define_option with-yp 'yp support?' yesnodir no \ +' Whether to build the yp extension.' + diff --git a/ext/yp/yp.c b/ext/yp/yp.c new file mode 100644 index 0000000000..9ec00daa7c --- /dev/null +++ b/ext/yp/yp.c @@ -0,0 +1,191 @@ +/* + +----------------------------------------------------------------------+ + | PHP HTML Embedded Scripting Language Version 4.0 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-1999 PHP Development Team (See Credits file) | + +----------------------------------------------------------------------+ + | This program is free software; you can redistribute it and/or modify | + | it under the terms of one of the following licenses: | + | | + | A) 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. | + | | + | B) the PHP License as published by the PHP Development Team and | + | included in the distribution in the file: LICENSE | + | | + | 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 both licenses referred to here. | + | If you did not, or have any questions about PHP licensing, please | + | contact core@php.net. | + +----------------------------------------------------------------------+ + | Authors: Stephanie Wehner <_@r4k.net> | + +----------------------------------------------------------------------+ + */ +/* $Id$ */ + +#include "php.h" + +#if HAVE_YP + +#include "php3_yp.h" + +#include <rpcsvc/ypclnt.h> + +function_entry yp_functions[] = { + PHP_FE(yp_get_default_domain, NULL) + PHP_FE(yp_order, NULL) + PHP_FE(yp_master, NULL) + PHP_FE(yp_match, NULL) + PHP_FE(yp_first, NULL) + PHP_FE(yp_next, NULL) + {NULL, NULL, NULL} +}; + +zend_module_entry yp_module_entry = { + "YP", + yp_functions, + NULL, + NULL, + NULL, + NULL, + php3_info_yp, + STANDARD_MODULE_PROPERTIES +}; + +/* {{{ proto string yp_get_default_domain(void) + Returns the domain or false */ +PHP_FUNCTION(yp_get_default_domain) { + char *outdomain; + + if(yp_get_default_domain(&outdomain)) { + RETURN_FALSE; + } + RETVAL_STRING(outdomain,1); +} +/* }}} */ + +/* {{{ proto int yp_order(string domain, string map) + Returns the order number or false */ +PHP_FUNCTION(yp_order) { + pval *domain, *map; + +#if SOLARIS_YP + unsigned long outval; +#else + int outval; +#endif + + if((ARG_COUNT(ht) != 2) || (getParameters(ht,2,&domain,&map) == FAILURE)) { + WRONG_PARAM_COUNT; + } + + convert_to_string(domain); + convert_to_string(map); + + if(yp_order(domain->value.str.val,map->value.str.val,&outval)) { + RETURN_FALSE; + } + + RETVAL_LONG(outval); +} +/* }}} */ + +/* {{{ proto string yp_master(string domain, string map) + Returns the machine name of the master */ +PHP_FUNCTION(yp_master) { + pval *domain, *map; + char *outname; + + if((ARG_COUNT(ht) != 2) || (getParameters(ht,2,&domain,&map) == FAILURE)) { + WRONG_PARAM_COUNT; + } + + convert_to_string(domain); + convert_to_string(map); + + if(yp_master(domain->value.str.val,map->value.str.val,&outname)) { + RETURN_FALSE; + } + + RETVAL_STRING(outname,1); +} +/* }}} */ + +/* {{{ proto string yp_match(string domain, string map, string key) + Returns the matched line or false */ +PHP_FUNCTION(yp_match) { + pval *domain, *map, *key; + char *outval; + int outvallen; + + if((ARG_COUNT(ht) != 3) || (getParameters(ht,3,&domain,&map,&key) == FAILURE)) { + WRONG_PARAM_COUNT; + } + + convert_to_string(domain); + convert_to_string(map); + convert_to_string(key); + + if(yp_match(domain->value.str.val,map->value.str.val,key->value.str.val,key->value.str.len,&outval,&outvallen)) { + RETURN_FALSE; + } + + RETVAL_STRING(outval,1); +} +/* }}} */ + +/* {{{ proto array yp_first(string domain, string map) + Returns the first key as $var["key"] and the first line as $var["value"] */ +PHP_FUNCTION(yp_first) { + pval *domain, *map; + char *outval, *outkey; + int outvallen, outkeylen; + + if((ARG_COUNT(ht) != 2) || (getParameters(ht,2,&domain,&map) == FAILURE)) { + WRONG_PARAM_COUNT; + } + + convert_to_string(domain); + convert_to_string(map); + + if(yp_first(domain->value.str.val,map->value.str.val,&outkey,&outkeylen,&outval,&outvallen)) { + RETURN_FALSE; + } + array_init(return_value); + add_assoc_string(return_value,"key",outkey,1); + add_assoc_string(return_value,"value",outval,1); +} +/* }}} */ + +/* {{{ proto array yp_next(string domain, string map, string key) + Returns an array with $var[$key] and the the line as the value */ +PHP_FUNCTION(yp_next) { + pval *domain, *map, *key; + char *outval, *outkey; + int outvallen, outkeylen; + + if((ARG_COUNT(ht) != 3) || (getParameters(ht,3,&domain,&map, &key) == FAILURE)) { + WRONG_PARAM_COUNT; + } + + convert_to_string(domain); + convert_to_string(map); + convert_to_string(key); + + if(yp_next(domain->value.str.val,map->value.str.val,key->value.str.val,key->value.str.len,&outkey,&outkeylen,&outval,&outvallen)) { + RETURN_FALSE; + } + array_init(return_value); + add_assoc_string(return_value,outkey,outval,1); +} +/* }}} */ + +void php3_info_yp(ZEND_MODULE_INFO_FUNC_ARGS) { + PUTS("Compiled with YP Support."); +} +#endif /* HAVE_YP */ |