mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
incorporate YP/NIS support
This commit is contained in:
6
ext/yp/Makefile.am
Normal file
6
ext/yp/Makefile.am
Normal file
@@ -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
|
||||
|
||||
5
ext/yp/config.h.stub
Normal file
5
ext/yp/config.h.stub
Normal file
@@ -0,0 +1,5 @@
|
||||
/* define if you want to use the yp extension */
|
||||
/* #undef HAVE_LIBYP */
|
||||
|
||||
#undef HAVE_YP
|
||||
#undef SOLARIS_YP
|
||||
29
ext/yp/config.m4
Normal file
29
ext/yp/config.m4
Normal file
@@ -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)
|
||||
])
|
||||
|
||||
62
ext/yp/php3_yp.h
Normal file
62
ext/yp/php3_yp.h
Normal file
@@ -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 */
|
||||
6
ext/yp/setup.stub
Normal file
6
ext/yp/setup.stub
Normal file
@@ -0,0 +1,6 @@
|
||||
# $Source$
|
||||
# $Id$
|
||||
|
||||
define_option with-yp 'yp support?' yesnodir no \
|
||||
' Whether to build the yp extension.'
|
||||
|
||||
191
ext/yp/yp.c
Normal file
191
ext/yp/yp.c
Normal file
@@ -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 */
|
||||
Reference in New Issue
Block a user