]> granicus.if.org Git - php/commitdiff
incorporate YP/NIS support
authorSascha Schumann <sas@php.net>
Fri, 21 May 1999 08:29:51 +0000 (08:29 +0000)
committerSascha Schumann <sas@php.net>
Fri, 21 May 1999 08:29:51 +0000 (08:29 +0000)
ext/yp/Makefile.am [new file with mode: 0644]
ext/yp/config.h.stub [new file with mode: 0644]
ext/yp/config.m4 [new file with mode: 0644]
ext/yp/php3_yp.h [new file with mode: 0644]
ext/yp/setup.stub [new file with mode: 0644]
ext/yp/yp.c [new file with mode: 0644]

diff --git a/ext/yp/Makefile.am b/ext/yp/Makefile.am
new file mode 100644 (file)
index 0000000..c3701cf
--- /dev/null
@@ -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 (file)
index 0000000..768e64e
--- /dev/null
@@ -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 (file)
index 0000000..6fd01b3
--- /dev/null
@@ -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 (file)
index 0000000..1059314
--- /dev/null
@@ -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 (file)
index 0000000..f91adef
--- /dev/null
@@ -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 (file)
index 0000000..9ec00da
--- /dev/null
@@ -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 */