mirror of
https://github.com/php/php-src.git
synced 2025-01-10 21:14:37 +08:00
239 lines
12 KiB
C
239 lines
12 KiB
C
/*
|
|
+----------------------------------------------------------------------+
|
|
| PHP Version 4 |
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 1997-2002 The PHP Group |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 2.02 of the PHP license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available at through the world-wide-web at |
|
|
| http://www.php.net/license/2_02.txt. |
|
|
| If you did not receive a copy of the PHP license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@php.net so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
| Author: Rasmus Lerdorf <rasmus@php.net> |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
/* $Id$ */
|
|
|
|
#ifndef HG_COMM_H
|
|
#define HG_COMM_H
|
|
|
|
#if HYPERWAVE
|
|
|
|
#define newlist
|
|
|
|
#include "hw_error.h"
|
|
#ifdef newlist
|
|
#else
|
|
#include "dlist.h"
|
|
#endif
|
|
#define HG_SERVER_PORT 418
|
|
|
|
#define F_DISTRIBUTED 0x80000000
|
|
#define F_COMPRESSED 0x40000000
|
|
#define F_VERSION 0x00003fff
|
|
#define HW_VERSION 717L /* 7.17 */
|
|
|
|
#define HEADER_LENGTH 12
|
|
|
|
#define STAT_COMMAND_STR "stat"
|
|
#define WHO_COMMAND_STR "who"
|
|
#define STAT_COMMAND 1
|
|
#define WHO_COMMAND 2
|
|
|
|
#define GETDOCBYANCHOR_MESSAGE 2
|
|
#define GETCHILDCOLL_MESSAGE 3
|
|
#define GETPARENT_MESSAGE 4
|
|
#define GETCHILDDOCCOLL_MESSAGE 5
|
|
#define GETOBJECT_MESSAGE 7
|
|
#define GETANCHORS_MESSAGE 8
|
|
#define GETOBJBYQUERY_MESSAGE 9
|
|
#define GETOBJBYQUERYCOLL_MESSAGE 10
|
|
#define OBJECTBYIDQUERY_MESSAGE 11
|
|
#define GETTEXT_MESSAGE 12
|
|
#define INSDOC_MESSAGE 14
|
|
#define INSCOLL_MESSAGE 17
|
|
#define GETSRCBYDEST_MESSAGE 19
|
|
#define MVCPDOCSCOLL_MESSAGE 22
|
|
#define MVCPCOLLSCOLL_MESSAGE 23
|
|
#define IDENTIFY_MESSAGE 24
|
|
#define READY_MESSAGE 25
|
|
#define COMMAND_MESSAGE 26
|
|
#define CHANGEOBJECT_MESSAGE 27
|
|
#define EDITTEXT_MESSAGE 28
|
|
#define GETANDLOCK_MESSAGE 29
|
|
#define UNLOCK_MESSAGE 30
|
|
#define INCOLLECTIONS_MESSAGE 31
|
|
#define INSERTOBJECT_MESSAGE 32
|
|
#define GETOBJBYFTQUERY_MESSAGE 34
|
|
#define GETOBJBYFTQUERYCOLL_MESSAGE 35
|
|
#define PIPEDOCUMENT_MESSAGE 36
|
|
#define DELETEOBJECT_MESSAGE 37
|
|
#define PUTDOCUMENT_MESSAGE 38
|
|
#define GETREMOTE_MESSAGE 39
|
|
#define GETREMOTECHILDREN_MESSAGE 40
|
|
#define HG_MAPID 43
|
|
#define CHILDREN_MESSAGE 44
|
|
#define GETCGI_MESSAGE 45
|
|
#define PIPECGI_MESSAGE 46
|
|
|
|
#define HW_DEFAULT_LINK 0
|
|
#define HW_IMAGE_LINK 1
|
|
#define HW_BACKGROUND_LINK 2
|
|
#define HW_INTAG_LINK 3
|
|
#define HW_APPLET_LINK 4
|
|
#define HW_INTAGNODEL_LINK 5
|
|
|
|
#define COPY 0
|
|
#define MOVE 1
|
|
#define DOCUMENT 0
|
|
#define COLLECTION 1
|
|
|
|
|
|
#ifdef PHP_WIN32
|
|
# define SOCK_ERR INVALID_SOCKET
|
|
# define SOCK_CONN_ERR SOCKET_ERROR
|
|
# define HWSOCK_FCLOSE(s) closesocket(s)
|
|
#else
|
|
# define SOCK_ERR -1
|
|
# define SOCK_CONN_ERR -1
|
|
# define HWSOCK_FCLOSE(s) close(s)
|
|
#endif
|
|
|
|
|
|
/* Low error messages */
|
|
#define LE_MALLOC -1
|
|
|
|
typedef struct {
|
|
int id; /* object ID of anchor */
|
|
int tanchor; /* Type of anchor. Can be 1=Src, 2=Dest */
|
|
int start; /* start of anchor */
|
|
int end; /* end of anchor */
|
|
char *nameanchor; /* name tag attribute of destination document */
|
|
/* if anchor is of type Src the following are used as well */
|
|
char *destdocname; /* name of destination document */
|
|
char *link; /* url for external destination */
|
|
int linktype; /* type of link. see above */
|
|
char *tagattr; /* more attributes of tag, like Border=0 */
|
|
char *htmlattr; /* */
|
|
char *codebase; /* codebase of applet */
|
|
char *code; /* code of applet */
|
|
char *fragment; /* name link of Src */
|
|
|
|
/* if anchor is of type Dest the following are used as well */
|
|
char *keyword; /* name link of Dest */
|
|
} ANCHOR;
|
|
|
|
typedef struct {
|
|
int length;
|
|
int version_msgid;
|
|
int msg_type;
|
|
char *buf;
|
|
} hg_msg;
|
|
|
|
typedef struct {
|
|
int socket;
|
|
int swap_on;
|
|
int version;
|
|
char *server_string;
|
|
char *hostname;
|
|
char *username;
|
|
int lasterror;
|
|
int linkroot;
|
|
} hw_connection;
|
|
|
|
typedef int hw_objectID;
|
|
typedef char hw_objrec;
|
|
typedef float hw_float;
|
|
|
|
#ifdef newlist
|
|
void fnDeleteAnchor(void *ptr1);
|
|
void fnListAnchor(zend_llist *pAnchorList);
|
|
zend_llist *fnCreateAnchorList(hw_objectID objID, char **anchors, char **docofanchorrec, char **reldestrec, int ancount, int anchormode);
|
|
char *fnInsAnchorsIntoText(char *text, zend_llist *pAnchorList, char **bodytag, char **urlprefix);
|
|
int fnCmpAnchors(const void *e1, const void *e2 TSRMLS_DC);
|
|
ANCHOR *fnAddAnchor(zend_llist *pAnchorList, int objectID, int start, int end);
|
|
#else
|
|
void fnDeleteAnchor(ANCHOR *ptr);
|
|
void fnListAnchor(DLIST *pAnchorList);
|
|
DLIST *fnCreateAnchorList(hw_objectID objID, char **anchors, char **docofanchorrec, char **reldestrec, int ancount, int anchormode);
|
|
char *fnInsAnchorsIntoText(char *text, DLIST *pAnchorList, char **bodytag, char **urlprefix);
|
|
int fnCmpAnchors(ANCHOR *a1, ANCHOR *a2 TSRMLS_DC);
|
|
ANCHOR *fnAddAnchor(DLIST *pAnchorList, int objectID, int start, int end);
|
|
#endif
|
|
extern void set_swap(int do_swap);
|
|
extern int open_hg_connection(char *server_name, int port);
|
|
extern void close_hg_connection(int sockfd);
|
|
extern int initialize_hg_connection(int sockfd, int *do_swap, int *version, char **userdata, char **server_string, char *username, char *password);
|
|
|
|
extern int send_ready(int sockfd);
|
|
extern int send_command(int sockfd, int command, char **answer);
|
|
|
|
extern hg_msg *recv_hg_msg(int sockfd);
|
|
extern hg_msg *recv_ready(int sockfd);
|
|
extern hg_msg *recv_command(int sockfd);
|
|
|
|
extern char *fnInsStr(char *str, int pos, char *insstr);
|
|
extern int fnAttributeCompare(char *object, char *attrname, char *value);
|
|
extern char *fnAttributeValue(char *object, char *attrname);
|
|
extern int getrellink(int sockfd, int rootID, int thisID, int destID, char **reldesstr);
|
|
|
|
extern int send_deleteobject(int sockfd, hw_objectID objectID);
|
|
extern int send_changeobject(int sockfd, hw_objectID objectID, char *mod);
|
|
extern int send_groupchangeobject(int sockfd, hw_objectID objectID, char *mod);
|
|
extern int send_getobject(int sockfd, hw_objectID objectID, char **attributes);
|
|
extern int send_getandlock(int sockfd, hw_objectID objectID, char **attributes);
|
|
extern int send_lock(int sockfd, hw_objectID objectID);
|
|
extern int send_unlock(int sockfd, hw_objectID objectID);
|
|
extern int send_gettext(int sockfd, hw_objectID objectID, int mode, int rootid, char **objattr, char **bodytag, char **text, int *count, char *urlprefix);
|
|
extern int send_edittext(int sockfd, char *objattr, char *text);
|
|
extern int send_getcgi(int sockfd, hw_objectID objectID, char *cgi_env_str, char **objattr, char **text, int *count);
|
|
extern int send_getremote(int sockfd, hw_objectID objectID, char **objattr, char **text, int *count);
|
|
extern int send_getremotechildren(int sockfd, char *attributes, char **text, int **childIDs, int *count);
|
|
extern int send_docbyanchor(int sockfd, hw_objectID objectID, hw_objectID *anchorID);
|
|
extern int send_docbyanchorobj(int sockfd, hw_objectID objectID, char **objrec);
|
|
extern int send_mvcpdocscollscoll(int sockfd, hw_objectID *objectIDs, int count, int from, int dest, int cpmv, int docscoll);
|
|
extern int send_childrenobj(int sockfd, hw_objectID objectID, char ***childrec, int *count);
|
|
extern int send_getchildcoll(int sockfd, int objectID, hw_objectID **childIDs, int *count);
|
|
extern int send_getchildcollobj(int sockfd, hw_objectID objectID, hw_objrec ***childrec, int *count);
|
|
extern int send_getchilddoccoll(int sockfd, hw_objectID objectID, hw_objectID **childIDs, int *count);
|
|
extern int send_getchilddoccollobj(int sockfd, hw_objectID objectID, hw_objrec ***childrec, int *count);
|
|
extern int send_getanchors(int sockfd, hw_objectID objectID, hw_objectID **anchorIDs, int *count);
|
|
extern int send_getanchorsobj(int sockfd, hw_objectID objectID, char ***childrec, int *count);
|
|
extern int send_objectbyidquery(int sockfd, hw_objectID *IDs, int *count, char *query, char ***objrecs);
|
|
extern int send_getobjbyquery(int sockfd, char *query, int maxhits, hw_objectID **childIDs, int *count);
|
|
extern int send_getobjbyqueryobj(int sockfd, char *query, int maxhits, char ***childrec, int *count);
|
|
extern int send_getobjbyquerycoll(int sockfd, hw_objectID collID, char *query, int maxhits, hw_objectID **childIDs, int *count);
|
|
extern int send_getobjbyquerycollobj(int sockfd, hw_objectID collID, char *query, int maxhits, char ***childrec, int *count);
|
|
extern int send_getobjbyftquery(int sockfd, char *query, int maxhits, hw_objectID **childIDs, float **weights, int *count);
|
|
extern int send_getobjbyftqueryobj(int sockfd, char *query, int maxhits, char ***childrec, float **weights, int *count);
|
|
extern int send_getobjbyftquerycoll(int sockfd, hw_objectID collID, char *query, int maxhits, hw_objectID **childIDs, float **weight, int *count);
|
|
extern int send_getobjbyftquerycollobj(int sockfd, hw_objectID collID, char *query, int maxhits, char ***childrec, float **weight, int *count);
|
|
extern int send_identify(int sockfd, char *name, char *passwd, char **userdata);
|
|
extern int send_getparents(int sockfd, hw_objectID objectID, hw_objectID **childIDs, int *count);
|
|
extern int send_children(int sockfd, hw_objectID objectID, hw_objectID **childIDs, int *count);
|
|
extern int send_getparentsobj(int sockfd, hw_objectID objectID, char ***childrec, int *count);
|
|
extern int send_pipedocument(int sockfd, char *hostname, hw_objectID objectID, int mode, int rootid, char** objattr, char **bodytag, char **text, int *count, char **urlprefix);
|
|
extern int send_pipecgi(int sockfd, char *host, hw_objectID objectID, char *cgi_env_str, char **objattr, char **text, int *count);
|
|
extern int send_putdocument(int sockfd, char *hostname, hw_objectID parentID, char *objectRec, char *text, int count, hw_objectID *objectID);
|
|
extern int send_inscoll(int sockfd, hw_objectID objectID, char *objrec, hw_objectID *new_objectID);
|
|
extern int send_insertobject(int sockfd, char *objrec, char *parms, hw_objectID *objectID);
|
|
extern int send_insdoc(int sockfd, hw_objectID objectID, char *objrec, char *text, hw_objectID *new_objectID);
|
|
extern int send_incollections(int sockfd, int retcol, int cobjids, hw_objectID *objectIDs, int ccollids, hw_objectID *collIDs, int *count, hw_objectID **retIDs);
|
|
extern int send_getsrcbydest(int sockfd, hw_objectID objid, char ***childrec, int *count);
|
|
extern int send_mapid(int sockfd, int servid, hw_objectID id, int *virtid);
|
|
extern int send_dummy(int sockfd, hw_objectID objectID, int msgid, char **attributes);
|
|
extern int send_insertanchors(char **text, int *count, char **anchors, char **destrec, int ancount, char **urlprefix, char **bodytag);
|
|
extern char *get_hw_info(hw_connection *conn);
|
|
|
|
#define send_mvcpdocscoll(sockfd, objectIDs, count, from, dest, mvcp) \
|
|
send_mvcpdocscollscoll(sockfd, objectIDs, count, from, dest, mvcp, DOCUMENT)
|
|
#define send_mvcpcollscoll(sockfd, objectIDs, count, from, dest, mvcp) \
|
|
send_mvcpdocscollscoll(sockfd, objectIDs, count, from, dest, mvcp, COLLECTION)
|
|
|
|
#endif
|
|
#endif
|