summaryrefslogtreecommitdiff
path: root/ext/hyperwave/hw.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/hyperwave/hw.c')
-rw-r--r--ext/hyperwave/hw.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/ext/hyperwave/hw.c b/ext/hyperwave/hw.c
index 31caae4a87..87925916c7 100644
--- a/ext/hyperwave/hw.c
+++ b/ext/hyperwave/hw.c
@@ -110,6 +110,7 @@ function_entry hw_functions[] = {
PHP_FE(hw_getrellink, NULL)
PHP_FE(hw_who, NULL)
PHP_FE(hw_stat, NULL)
+ PHP_FE(hw_mapid, NULL)
PHP_FE(hw_dummy, NULL)
{NULL, NULL, NULL}
};
@@ -3586,6 +3587,37 @@ PHP_FUNCTION(hw_getsrcbydestobj) {
}
/* }}} */
+/* {{{ proto int hw_mapid(int link, int serverid, int destid)
+ Returns virtual object id of document on remote hw server */
+PHP_FUNCTION(hw_mapid) {
+ pval *arg1, *arg2, *arg3;
+ int link, type, servid, id, virtid;
+ hw_connection *ptr;
+
+ if (ARG_COUNT(ht) != 3 || getParameters(ht, 3, &arg1, &arg2, &arg3) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_long(arg1);
+ convert_to_long(arg2);
+ convert_to_long(arg3);
+ link=arg1->value.lval;
+ servid=arg2->value.lval;
+ id=arg3->value.lval;
+ ptr = php3_list_find(link,&type);
+ if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
+ php3_error(E_WARNING,"Unable to find file identifier %d",link);
+ RETURN_FALSE;
+ }
+
+ set_swap(ptr->swap_on);
+ if (0 != (ptr->lasterror = send_mapid(ptr->socket, servid, id, &virtid))) {
+ php3_error(E_WARNING, "send_command (mapid) returned %d\n", ptr->lasterror);
+ RETURN_FALSE;
+ }
+ RETURN_LONG(virtid);
+}
+/* }}} */
+
/* {{{ proto string hw_getrellink(int link, int rootid, int sourceid, int destid)
Get link form source to dest relative to rootid */
PHP_FUNCTION(hw_getrellink) {