Foundation instead of in the original English.
\1f
+File: lispref.info, Node: Grabs, Prev: Server Data, Up: X Server
+
+Restricting Access to the Server by Other Apps
+----------------------------------------------
+
+ - Function: x-grab-keyboard &optional device
+ This function grabs the keyboard on the given device (defaulting
+ to the selected one). So long as the keyboard is grabbed, all
+ keyboard events will be delivered to XEmacs--it is not possible
+ for other X clients to eavesdrop on them. Ungrab the keyboard
+ with `x-ungrab-keyboard' (use an `unwind-protect'). Returns `t'
+ if the grab was successful; `nil' otherwise.
+
+ - Function: x-ungrab-keyboard &optional device
+ This function releases a keyboard grab made with `x-grab-keyboard'.
+
+ - Function: x-grab-pointer &optional device cursor ignore-keyboard
+ This function grabs the pointer and restricts it to its current
+ window. If optional DEVICE argument is `nil', the selected device
+ will be used. If optional CURSOR argument is non-`nil', change
+ the pointer shape to that until `x-ungrab-pointer' is called (it
+ should be an object returned by the `make-cursor' function). If
+ the second optional argument IGNORE-KEYBOARD is non-`nil', ignore
+ all keyboard events during the grab. Returns `t' if the grab is
+ successful, `nil' otherwise.
+
+ - Function: x-ungrab-pointer &optional device
+ This function releases a pointer grab made with `x-grab-pointer'.
+ If optional first arg DEVICE is `nil' the selected device is used.
+ If it is `t' the pointer will be released on all X devices.
+
+\1f
+File: lispref.info, Node: X Miscellaneous, Prev: X Server, Up: X-Windows
+
+Miscellaneous X Functions and Variables
+=======================================
+
+ - Variable: x-bitmap-file-path
+ This variable holds a list of the directories in which X bitmap
+ files may be found. If `nil', this is initialized from the
+ `"*bitmapFilePath"' resource. This is used by the
+ `make-image-instance' function (however, note that if the
+ environment variable `XBMLANGPATH' is set, it is consulted first).
+
+ - Variable: x-library-search-path
+ This variable holds the search path used by `read-color' to find
+ `rgb.txt'.
+
+ - Function: x-valid-keysym-name-p keysym
+ This function returns true if KEYSYM names a keysym that the X
+ library knows about. Valid keysyms are listed in the files
+ `/usr/include/X11/keysymdef.h' and in `/usr/lib/X11/XKeysymDB', or
+ whatever the equivalents are on your system.
+
+ - Function: x-window-id &optional frame
+ This function returns the ID of the X11 window. This gives us a
+ chance to manipulate the Emacs window from within a different
+ program. Since the ID is an unsigned long, we return it as a
+ string.
+
+ - Variable: x-allow-sendevents
+ If non-`nil', synthetic events are allowed. `nil' means they are
+ ignored. Beware: allowing XEmacs to process SendEvents opens a
+ big security hole.
+
+ - Function: x-debug-mode arg &optional device
+ With a true arg, make the connection to the X server synchronous.
+ With false, make it asynchronous. Synchronous connections are
+ much slower, but are useful for debugging. (If you get X errors,
+ make the connection synchronous, and use a debugger to set a
+ breakpoint on `x_error_handler'. Your backtrace of the C stack
+ will now be useful. In asynchronous mode, the stack above
+ `x_error_handler' isn't helpful because of buffering.) If DEVICE
+ is not specified, the selected device is assumed.
+
+ Calling this function is the same as calling the C function
+ `XSynchronize', or starting the program with the `-sync' command
+ line argument.
+
+ - Variable: x-debug-events
+ If non-zero, debug information about events that XEmacs sees is
+ displayed. Information is displayed on stderr. Currently defined
+ values are:
+
+ * 1 == non-verbose output
+
+ * 2 == verbose output
+
+\1f
+File: lispref.info, Node: ToolTalk Support, Next: LDAP Support, Prev: X-Windows, Up: Top
+
+ToolTalk Support
+****************
+
+* Menu:
+
+* XEmacs ToolTalk API Summary::
+* Sending Messages::
+* Receiving Messages::
+
+\1f
+File: lispref.info, Node: XEmacs ToolTalk API Summary, Next: Sending Messages, Up: ToolTalk Support
+
+XEmacs ToolTalk API Summary
+===========================
+
+ The XEmacs Lisp interface to ToolTalk is similar, at least in spirit,
+to the standard C ToolTalk API. Only the message and pattern parts of
+the API are supported at present; more of the API could be added if
+needed. The Lisp interface departs from the C API in a few ways:
+
+ * ToolTalk is initialized automatically at XEmacs startup-time.
+ Messages can only be sent other ToolTalk applications connected to
+ the same X11 server that XEmacs is running on.
+
+ * There are fewer entry points; polymorphic functions with keyword
+ arguments are used instead.
+
+ * The callback interface is simpler and marginally less functional.
+ A single callback may be associated with a message or a pattern;
+ the callback is specified with a Lisp symbol (the symbol should
+ have a function binding).
+
+ * The session attribute for messages and patterns is always
+ initialized to the default session.
+
+ * Anywhere a ToolTalk enum constant, e.g. `TT_SESSION', is valid, one
+ can substitute the corresponding symbol, e.g. `'TT_SESSION'. This
+ simplifies building lists that represent messages and patterns.
+
+\1f
+File: lispref.info, Node: Sending Messages, Next: Receiving Messages, Prev: XEmacs ToolTalk API Summary, Up: ToolTalk Support
+
+Sending Messages
+================
+
+* Menu:
+
+* Example of Sending Messages::
+* Elisp Interface for Sending Messages::
+
+\1f
+File: lispref.info, Node: Example of Sending Messages, Next: Elisp Interface for Sending Messages, Up: Sending Messages
+
+Example of Sending Messages
+---------------------------
+
+ Here's a simple example that sends a query to another application
+and then displays its reply. Both the query and the reply are stored
+in the first argument of the message.
+
+ (defun tooltalk-random-query-handler (msg)
+ (let ((state (get-tooltalk-message-attribute msg 'state)))
+ (cond
+ ((eq state 'TT_HANDLED)
+ (message (get-tooltalk-message-attribute msg arg_val 0)))
+ ((memq state '(TT_FAILED TT_REJECTED))
+ (message "Random query turns up nothing")))))
+
+ (defvar random-query-message
+ '( class TT_REQUEST
+ scope TT_SESSION
+ address TT_PROCEDURE
+ op "random-query"
+ args '((TT_INOUT "?" "string"))
+ callback tooltalk-random-query-handler))
+
+ (let ((m (make-tooltalk-message random-query-message)))
+ (send-tooltalk-message m))
+
+\1f
+File: lispref.info, Node: Elisp Interface for Sending Messages, Prev: Example of Sending Messages, Up: Sending Messages
+
+Elisp Interface for Sending Messages
+------------------------------------
+
+ - Function: make-tooltalk-message attributes
+ Create a ToolTalk message and initialize its attributes. The
+ value of ATTRIBUTES must be a list of alternating keyword/values,
+ where keywords are symbols that name valid message attributes.
+ For example:
+
+ (make-tooltalk-message
+ '(class TT_NOTICE
+ scope TT_SESSION
+ address TT_PROCEDURE
+ op "do-something"
+ args ("arg1" 12345 (TT_INOUT "arg3" "string"))))
+
+ Values must always be strings, integers, or symbols that represent
+ ToolTalk constants. Attribute names are the same as those
+ supported by `set-tooltalk-message-attribute', plus `args'.
+
+ The value of `args' should be a list of message arguments where
+ each message argument has the following form:
+
+ `(mode [value [type]])' or just `value'
+
+ Where MODE is one of `TT_IN', `TT_OUT', or `TT_INOUT' and TYPE is
+ a string. If TYPE isn't specified then `int' is used if VALUE is
+ a number; otherwise `string' is used. If TYPE is `string' then
+ VALUE is converted to a string (if it isn't a string already) with
+ `prin1-to-string'. If only a value is specified then MODE
+ defaults to `TT_IN'. If MODE is `TT_OUT' then VALUE and TYPE
+ don't need to be specified. You can find out more about the
+ semantics and uses of ToolTalk message arguments in chapter 4 of
+ the `ToolTalk Programmer's Guide'.
+
+
+ - Function: send-tooltalk-message msg
+ Send the message on its way. Once the message has been sent it's
+ almost always a good idea to get rid of it with
+ `destroy-tooltalk-message'.
+
+
+ - Function: return-tooltalk-message msg &optional mode
+ Send a reply to this message. The second argument can be `reply',
+ `reject' or `fail'; the default is `reply'. Before sending a
+ reply, all message arguments whose mode is `TT_INOUT' or `TT_OUT'
+ should have been filled in--see `set-tooltalk-message-attribute'.
+
+
+ - Function: get-tooltalk-message-attribute msg attribute &optional argn
+ Returns the indicated ToolTalk message attribute. Attributes are
+ identified by symbols with the same name (underscores and all) as
+ the suffix of the ToolTalk `tt_message_<attribute>' function that
+ extracts the value. String attribute values are copied and
+ enumerated type values (except disposition) are converted to
+ symbols; e.g. `TT_HANDLER' is `'TT_HANDLER', `uid' and `gid' are
+ represented by fixnums (small integers), `opnum' is converted to a
+ string, and `disposition' is converted to a fixnum. We convert
+ `opnum' (a C int) to a string (e.g. `123' => `"123"') because
+ there's no guarantee that opnums will fit within the range of
+ XEmacs Lisp integers.
+
+ [TBD] Use the `plist' attribute instead of C API `user' attribute
+ for user-defined message data. To retrieve the value of a message
+ property, specify the indicator for ARGN. For example, to get the
+ value of a property called `rflag', use
+
+ (get-tooltalk-message-attribute msg 'plist 'rflag)
+
+ To get the value of a message argument use one of the `arg_val'
+ (strings), `arg_ival' (integers), or `arg_bval' (strings with
+ embedded nulls), attributes. For example, to get the integer
+ value of the third argument:
+
+ (get-tooltalk-message-attribute msg 'arg_ival 2)
+
+ As you can see, argument numbers are zero-based. The type of each
+ arguments can be retrieved with the `arg_type' attribute; however
+ ToolTalk doesn't define any semantics for the string value of
+ `arg_type'. Conventionally `string' is used for strings and `int'
+ for 32 bit integers. Note that XEmacs Lisp stores the lengths of
+ strings explicitly (unlike C) so treating the value returned by
+ `arg_bval' like a string is fine.
+
+
+ - Function: set-tooltalk-message-attribute value msg attribute
+ &optional argn
+ Initialize one ToolTalk message attribute.
+
+ Attribute names and values are the same as for
+ `get-tooltalk-message-attribute'. A property list is provided for
+ user data (instead of the `user' message attribute); see
+ `get-tooltalk-message-attribute'.
+
+ Callbacks are handled slightly differently than in the C ToolTalk
+ API. The value of CALLBACK should be the name of a function of one
+ argument. It will be called each time the state of the message
+ changes. This is usually used to notice when the message's state
+ has changed to `TT_HANDLED' (or `TT_FAILED'), so that reply
+ argument values can be used.
+
+ If one of the argument attributes is specified as `arg_val',
+ `arg_ival', or `arg_bval', then ARGN must be the number of an
+ already created argument. Arguments can be added to a message
+ with `add-tooltalk-message-arg'.
+
+
+ - Function: add-tooltalk-message-arg msg mode type &optional value
+ Append one new argument to the message. MODE must be one of
+ `TT_IN', `TT_INOUT', or `TT_OUT', TYPE must be a string, and VALUE
+ can be a string or an integer. ToolTalk doesn't define any
+ semantics for TYPE, so only the participants in the protocol
+ you're using need to agree what types mean (if anything).
+ Conventionally `string' is used for strings and `int' for 32 bit
+ integers. Arguments can initialized by providing a value or with
+ `set-tooltalk-message-attribute'; the latter is necessary if you
+ want to initialize the argument with a string that can contain
+ embedded nulls (use `arg_bval').
+
+
+ - Function: create-tooltalk-message &optional no-callback
+ Create a new ToolTalk message. The message's session attribute is
+ initialized to the default session. Other attributes can be
+ initialized with `set-tooltalk-message-attribute'.
+ `make-tooltalk-message' is the preferred way to create and
+ initialize a message.
+
+ Optional arg NO-CALLBACK says don't add a C-level callback at all.
+ Normally don't do that; just don't specify the Lisp callback when
+ calling `make-tooltalk-message'.
+
+
+ - Function: destroy-tooltalk-message msg
+ Apply `tt_message_destroy' to the message. It's not necessary to
+ destroy messages after they've been processed by a message or
+ pattern callback, the Lisp/ToolTalk callback machinery does this
+ for you.
+
+\1f
+File: lispref.info, Node: Receiving Messages, Prev: Sending Messages, Up: ToolTalk Support
+
+Receiving Messages
+==================
+
+* Menu:
+
+* Example of Receiving Messages::
+* Elisp Interface for Receiving Messages::
+
+\1f
+File: lispref.info, Node: Example of Receiving Messages, Next: Elisp Interface for Receiving Messages, Up: Receiving Messages
+
+Example of Receiving Messages
+-----------------------------
+
+ Here's a simple example of a handler for a message that tells XEmacs
+to display a string in the mini-buffer area. The message operation is
+called `emacs-display-string'. Its first (0th) argument is the string
+to display.
+
+ (defun tooltalk-display-string-handler (msg)
+ (message (get-tooltalk-message-attribute msg 'arg_val 0)))
+
+ (defvar display-string-pattern
+ '(category TT_HANDLE
+ scope TT_SESSION
+ op "emacs-display-string"
+ callback tooltalk-display-string-handler))
+
+ (let ((p (make-tooltalk-pattern display-string-pattern)))
+ (register-tooltalk-pattern p))
+
+\1f
+File: lispref.info, Node: Elisp Interface for Receiving Messages, Prev: Example of Receiving Messages, Up: Receiving Messages
+
+Elisp Interface for Receiving Messages
+--------------------------------------
+
+ - Function: make-tooltalk-pattern attributes
+ Create a ToolTalk pattern and initialize its attributes. The
+ value of attributes must be a list of alternating keyword/values,
+ where keywords are symbols that name valid pattern attributes or
+ lists of valid attributes. For example:
+
+ (make-tooltalk-pattern
+ '(category TT_OBSERVE
+ scope TT_SESSION
+ op ("operation1" "operation2")
+ args ("arg1" 12345 (TT_INOUT "arg3" "string"))))
+
+ Attribute names are the same as those supported by
+ `add-tooltalk-pattern-attribute', plus `'args'.
+
+ Values must always be strings, integers, or symbols that represent
+ ToolTalk constants or lists of same. When a list of values is
+ provided all of the list elements are added to the attribute. In
+ the example above, messages whose `op' attribute is `"operation1"'
+ or `"operation2"' would match the pattern.
+
+ The value of ARGS should be a list of pattern arguments where each
+ pattern argument has the following form:
+
+ `(mode [value [type]])' or just `value'
+
+ Where MODE is one of `TT_IN', `TT_OUT', or `TT_INOUT' and TYPE is
+ a string. If TYPE isn't specified then `int' is used if VALUE is
+ a number; otherwise `string' is used. If TYPE is `string' then
+ VALUE is converted to a string (if it isn't a string already) with
+ `prin1-to-string'. If only a value is specified then MODE
+ defaults to `TT_IN'. If MODE is `TT_OUT' then VALUE and TYPE
+ don't need to be specified. You can find out more about the
+ semantics and uses of ToolTalk pattern arguments in chapter 3 of
+ the `ToolTalk Programmer's Guide'.
+
+
+ - Function: register-tooltalk-pattern pattern
+ XEmacs will begin receiving messages that match this pattern.
+
+ - Function: unregister-tooltalk-pattern pattern
+ XEmacs will stop receiving messages that match this pattern.
+
+ - Function: add-tooltalk-pattern-attribute value pattern indicator
+ Add one value to the indicated pattern attribute. The names of
+ attributes are the same as the ToolTalk accessors used to set them
+ less the `tooltalk_pattern_' prefix and the `_add' suffix. For
+ example, the name of the attribute for the
+ `tt_pattern_disposition_add' attribute is `disposition'. The
+ `category' attribute is handled specially, since a pattern can only
+ be a member of one category (`TT_OBSERVE' or `TT_HANDLE').
+
+ Callbacks are handled slightly differently than in the C ToolTalk
+ API. The value of CALLBACK should be the name of a function of one
+ argument. It will be called each time the pattern matches an
+ incoming message.
+
+ - Function: add-tooltalk-pattern-arg pattern mode vtype &optional value
+ Add one fully-specified argument to a ToolTalk pattern. MODE must
+ be one of `TT_IN', `TT_INOUT', or `TT_OUT'. VTYPE must be a
+ string. VALUE can be an integer, string or `nil'. If VALUE is an
+ integer then an integer argument (`tt_pattern_iarg_add') is added;
+ otherwise a string argument is added. At present there's no way
+ to add a binary data argument.
+
+
+ - Function: create-tooltalk-pattern
+ Create a new ToolTalk pattern and initialize its session attribute
+ to be the default session.
+
+ - Function: destroy-tooltalk-pattern pattern
+ Apply `tt_pattern_destroy' to the pattern. This effectively
+ unregisters the pattern.
+
+ - Function: describe-tooltalk-message msg &optional stream
+ Print the message's attributes and arguments to STREAM. This is
+ often useful for debugging.
+
+\1f
+File: lispref.info, Node: LDAP Support, Next: PostgreSQL Support, Prev: ToolTalk Support, Up: Top
+
+LDAP Support
+************
+
+ XEmacs can be linked with a LDAP client library to provide Elisp
+primitives to access directory servers using the Lightweight Directory
+Access Protocol.
+
+* Menu:
+
+* Building XEmacs with LDAP support:: How to add LDAP support to XEmacs
+* XEmacs LDAP API:: Lisp access to LDAP functions
+* Syntax of Search Filters:: A brief summary of RFC 1558
+
+\1f
+File: lispref.info, Node: Building XEmacs with LDAP support, Next: XEmacs LDAP API, Prev: LDAP Support, Up: LDAP Support
+
+Building XEmacs with LDAP support
+=================================
+
+ LDAP support must be added to XEmacs at build time since it requires
+linking to an external LDAP client library. As of 21.2, XEmacs has been
+successfully built and tested with
+
+ * OpenLDAP 1.2 (<http://www.openldap.org/>)
+
+ * University of Michigan's LDAP 3.3
+ (<http://www.umich.edu/~dirsvcs/ldap/>)
+
+ * LDAP SDK 1.0 from Netscape Corp. (<http://developer.netscape.com/>)
+
+ Other libraries conforming to RFC 1823 will probably work also but
+may require some minor tweaking at C level.
+
+ The standard XEmacs configure script auto-detects an installed LDAP
+library provided the library itself and the corresponding header files
+can be found in the library and include paths. A successful detection
+will be signalled in the final output of the configure script.
+
+\1f
+File: lispref.info, Node: XEmacs LDAP API, Next: Syntax of Search Filters, Prev: Building XEmacs with LDAP support, Up: LDAP Support
+
+XEmacs LDAP API
+===============
+
+ XEmacs LDAP API consists of two layers: a low-level layer which
+tries to stay as close as possible to the C API (where practical) and a
+higher-level layer which provides more convenient primitives to
+effectively use LDAP.
+
+ The low-level API should be used directly for very specific purposes
+(such as multiple operations on a connection) only. The higher-level
+functions provide a more convenient way to access LDAP directories
+hiding the subtleties of handling the connection, translating arguments
+and ensuring compliance with LDAP internationalization rules and formats
+(currently partly implemented only).
+
+* Menu:
+
+* LDAP Variables:: Lisp variables related to LDAP
+* The High-Level LDAP API:: High-level LDAP lisp functions
+* The Low-Level LDAP API:: Low-level LDAP lisp primitives
+* LDAP Internationalization:: I18n variables and functions
+
+\1f
File: lispref.info, Node: LDAP Variables, Next: The High-Level LDAP API, Prev: XEmacs LDAP API, Up: XEmacs LDAP API
LDAP Variables
according to the actual parameters. A direct call to one of these two
functions is preferred since it is faster and unambiguous.
- - Function: ldap-search-entries filter &optional host attributes
+ - Command: ldap-search-entries filter &optional host attributes
attrsonly withdn
Perform an LDAP search. FILTER is the search filter *note Syntax
of Search Filters:: HOST is the LDAP host on which to perform the
specifications of the form `(DN (ATTR . VALUE) (ATTR . VALUE) ...)'
where DN the distinguished name of an entry to add, the following
are cons cells containing attribute/value string pairs. HOST is
- the LDAP host, defaulting to `ldap-default-host' BINDDN is the DN
- to bind as to the server PASSWD is the corresponding password.
+ the LDAP host, defaulting to `ldap-default-host'. BINDDN is the
+ DN to bind as to the server. PASSWD is the corresponding password.
- Function: ldap-modify-entries entry-mods &optional host binddn passwd
Modify entries of an LDAP directory. ENTRY_MODS is a list of
depending on MOD-OP. MOD-OP is the type of modification, one of
the symbols `add', `delete' or `replace'. ATTR is the LDAP
attribute type to modify. HOST is the LDAP host, defaulting to
- `ldap-default-host' BINDDN is the DN to bind as to the server
- PASSWD is the corresponding password"
+ `ldap-default-host'. BINDDN is the DN to bind as to the server.
+ PASSWD is the corresponding password.
- Function: ldap-delete-entries dn &optional host binddn passwd
Delete an entry from an LDAP directory. DN is the distinguished
name of an entry to delete or a list of those. HOST is the LDAP
- host, defaulting to `ldap-default-host' BINDDN is the DN to bind
- as to the server PASSWD is the corresponding password.
+ host, defaulting to `ldap-default-host'. BINDDN is the DN to bind
+ as to the server. PASSWD is the corresponding password.
\1f
File: lispref.info, Node: The Low-Level LDAP API, Next: LDAP Internationalization, Prev: The High-Level LDAP API, Up: XEmacs LDAP API
This function returns non-`nil' if OBJECT is a `ldap' object.
- Function: ldap-host ldap
- Return the server host of the connection represented by LDAP
+ Return the server host of the connection represented by LDAP.
- Function: ldap-live-p ldap
- Return non-`nil' if LDAP is an active LDAP connection
+ Return non-`nil' if LDAP is an active LDAP connection.
\1f
File: lispref.info, Node: Opening and Closing a LDAP Connection, Next: Low-level Operations on a LDAP Server, Prev: The LDAP Lisp Object, Up: The Low-Level LDAP API
`always', `search' or `find' and defines how aliases are
dereferenced.
`never'
- Aliases are never dereferenced
+ Aliases are never dereferenced.
`always'
- Aliases are always dereferenced
+ Aliases are always dereferenced.
`search'
- Aliases are dereferenced when searching
+ Aliases are dereferenced when searching.
`find'
Aliases are dereferenced when locating the base object
- for the search The default is `never'.
+ for the search. The default is `never'.
`timelimit'
The timeout limit for the connection in seconds.
performed on this connection.
- Function: ldap-close ldap
- Close the connection represented by LDAP
+ Close the connection represented by LDAP.
\1f
File: lispref.info, Node: Low-level Operations on a LDAP Server, Prev: Opening and Closing a LDAP Connection, Up: The Low-Level LDAP API
made on the same connection, then the session must be closed with
`ldap-close'.
- - Function: ldap-search-basic ldap filter base scope attrs attrsonly
+ - Function: ldap-search-basic ldap filter &optional base scope attrs
+ attrsonly withdn verbose
Perform a search on an open connection LDAP created with
`ldap-open'. FILTER is a filter string for the search *note
Syntax of Search Filters:: BASE is the distinguished name at which
to start the search. SCOPE is one of the symbols `base',
`onelevel' or `subtree' indicating the scope of the search limited
to a base object, to a single level or to the whole subtree. The
- default is `subtree'. `attrs' is a list of strings indicating
- which attributes to retrieve for each matching entry. If `nil' all
- available attributes are returned. If `attrsonly' is non-`nil'
- then only the attributes are retrieved, not their associated values
- If `withdn' is non-`nil' then each entry in the result is
- prepended with its distinguished name DN If `verbose' is non-`nil'
- then progress messages are echoed The function returns a list of
+ default is `subtree'. ATTRS is a list of strings indicating which
+ attributes to retrieve for each matching entry. If `nil' all
+ available attributes are returned. If ATTRSONLY is non-`nil' then
+ only the attributes are retrieved, not their associated values.
+ If WITHDN is non-`nil' then each entry in the result is prepended
+ with its distinguished name DN. If VERBOSE is non-`nil' then
+ progress messages are echoed The function returns a list of
matching entries. Each entry is itself an alist of
attribute/value pairs optionally preceded by the DN of the entry
- according to the value of `withdn'.
+ according to the value of WITHDN.
- Function: ldap-add ldap dn entry
Add ENTRY to a LDAP directory which a connection LDAP has been
...)' MOD-OP and ATTR are mandatory, VALUES are optional
depending on MOD-OP. MOD-OP is the type of modification, one of
the symbols `add', `delete' or `replace'. ATTR is the LDAP
- attribute type to modify
+ attribute type to modify.
- Function: ldap-delete ldap dn
Delete an entry to an LDAP directory. LDAP is an LDAP connection
object created with `ldap-open'. DN is the distinguished name of
- the entry to delete
+ the entry to delete.
\1f
File: lispref.info, Node: LDAP Internationalization, Prev: The Low-Level LDAP API, Up: XEmacs LDAP API
- Variable: ldap-default-attribute-decoder
Decoder function to use for attributes whose syntax is unknown.
Such a function receives an encoded attribute value as a string
- and should return the decoded value as a string
+ and should return the decoded value as a string.
- Variable: ldap-attribute-syntax-encoders
A vector of functions used to encode LDAP attribute values. The
- Variable: ldap-attribute-syntaxes-alist
A map of LDAP attribute names to their type object id minor number.
- This table is built from RFC2252 Section 5 and RFC2256 Section 5
+ This table is built from RFC2252 Section 5 and RFC2256 Section 5.
\1f
File: lispref.info, Node: Encoder/Decoder Functions, Prev: LDAP Internationalization Variables, Up: LDAP Internationalization
- Function: ldap-encode-boolean bool
A function that encodes an elisp boolean BOOL into a LDAP boolean
- string representation
+ string representation.
- Function: ldap-decode-boolean str
A function that decodes a LDAP boolean string representation STR
- into an elisp boolean
+ into an elisp boolean.
- Function: ldap-decode-string str
- Decode a string STR according to `ldap-coding-system'
+ Decode a string STR according to LDAP-CODING-SYSTEM.
- Function: ldap-encode-string str
- Encode a string STR according to `ldap-coding-system'
+ Encode a string STR according to LDAP-CODING-SYSTEM.
- Function: ldap-decode-address str
- Decode an address STR according to `ldap-coding-system' and
+ Decode an address STR according to LDAP-CODING-SYSTEM and
replacing $ signs with newlines as specified by LDAP encoding
- rules for addresses
+ rules for addresses.
- Function: ldap-encode-address str
- Encode an address STR according to `ldap-coding-system' and
+ Encode an address STR according to LDAP-CODING-SYSTEM and
replacing newlines with $ signs as specified by LDAP encoding
- rules for addresses
+ rules for addresses.
\1f
File: lispref.info, Node: Syntax of Search Filters, Prev: XEmacs LDAP API, Up: LDAP Support
Compatibility Note: This variable is not present in InfoDock.
-\1f
-File: lispref.info, Node: libpq Lisp Symbols and DataTypes, Next: Synchronous Interface Functions, Prev: libpq Lisp Variables, Up: XEmacs PostgreSQL libpq API
-
-libpq Lisp Symbols and Datatypes
---------------------------------
-
- The following set of symbols are used to represent the intermediate
-states involved in the asynchronous interface.
-
- - Symbol: pgres::polling-failed
- Undocumented. A fatal error has occurred during processing of an
- asynchronous operation.
-
- - Symbol: pgres::polling-reading
- An intermediate status return during an asynchronous operation. It
- indicates that one may use `select' before polling again.
-
- - Symbol: pgres::polling-writing
- An intermediate status return during an asynchronous operation. It
- indicates that one may use `select' before polling again.
-
- - Symbol: pgres::polling-ok
- An asynchronous operation has successfully completed.
-
- - Symbol: pgres::polling-active
- An intermediate status return during an asynchronous operation.
- One can call the poll function again immediately.
-
- - Function: pq-pgconn conn field
- CONN A database connection object. FIELD A symbol indicating
- which field of PGconn to fetch. Possible values are shown in the
- following table.
- `pq::db'
- Database name
-
- `pq::user'
- Database user name
-
- `pq::pass'
- Database user's password
-
- `pq::host'
- Hostname database server is running on
-
- `pq::port'
- TCP port number used in the connection
-
- `pq::tty'
- Debugging TTY
-
- Compatibility note: Debugging TTYs are not used in the
- XEmacs Lisp API.
-
- `pq::options'
- Additional server options
-
- `pq::status'
- Connection status. Possible return values are shown in the
- following table.
- `pg::connection-ok'
- The normal, connected status.
-
- `pg::connection-bad'
- The connection is not open and the PGconn object needs
- to be deleted by `pq-finish'.
-
- `pg::connection-started'
- An asynchronous connection has been started, but is not
- yet complete.
-
- `pg::connection-made'
- An asynchronous connect has been made, and there is data
- waiting to be sent.
-
- `pg::connection-awaiting-response'
- Awaiting data from the backend during an asynchronous
- connection.
-
- `pg::connection-auth-ok'
- Received authentication, waiting for the backend to
- start up.
-
- `pg::connection-setenv'
- Negotiating environment during an asynchronous
- connection.
-
- `pq::error-message'
- The last error message that was delivered to this connection.
-
- `pq::backend-pid'
- The process ID of the backend database server.
-
- The `PGresult' object is used by libpq to encapsulate the results of
-queries. The printed representation takes on four forms. When the
-PGresult object contains tuples from an SQL `SELECT' it will look like:
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
-
- The number in brackets indicates how many rows of data are available.
-When the PGresult object is the result of a command query that doesn't
-return anything, it will look like:
-
- (pq-exec P "CREATE TABLE a_new_table (i int);")
- => #<PGresult PGRES_COMMAND_OK - CREATE>
-
- When either the query is a command-type query that can affect a
-number of different rows, but doesn't return any of them it will look
-like:
-
- (progn
- (pq-exec P "INSERT INTO a_new_table VALUES (1);")
- (pq-exec P "INSERT INTO a_new_table VALUES (2);")
- (pq-exec P "INSERT INTO a_new_table VALUES (3);")
- (setq R (pq-exec P "DELETE FROM a_new_table;")))
- => #<PGresult PGRES_COMMAND_OK[3] - DELETE 3>
-
- Lastly, when the underlying PGresult object has been deallocated
-directly by `pq-clear' the printed representation will look like:
-
- (progn
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- (pq-clear R)
- R)
- => #<PGresult DEAD>
-
- The following set of functions are accessors to various data in the
-PGresult object.
-
- - Function: pq-result-status result
- Return status of a query result. RESULT is a PGresult object.
- The return value is one of the symbols in the following table.
- `pgres::empty-query'
- A query contained no text. This is usually the result of a
- recoverable error, or a minor programming error.
-
- `pgres::command-ok'
- A query command that doesn't return anything was executed
- properly by the backend.
-
- `pgres::tuples-ok'
- A query command that returns tuples was executed properly by
- the backend.
-
- `pgres::copy-out'
- Copy Out data transfer is in progress.
-
- `pgres::copy-in'
- Copy In data transfer is in progress.
-
- `pgres::bad-response'
- An unexpected response was received from the backend.
-
- `pgres::nonfatal-error'
- Undocumented. This value is returned when the libpq function
- `PQresultStatus' is called with a NULL pointer.
-
- `pgres::fatal-error'
- Undocumented. An error has occurred in processing the query
- and the operation was not completed.
-
- - Function: pq-res-status result
- Return the query result status as a string, not a symbol. RESULT
- is a PGresult object.
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
- (pq-res-status R)
- => "PGRES_TUPLES_OK"
-
- - Function: pq-result-error-message result
- Return an error message generated by the query, if any. RESULT is
- a PGresult object.
-
- (setq R (pq-exec P "SELECT * FROM xemacs-test;"))
- => <A fatal error is signaled in the echo area>
- (pq-result-error-message R)
- => "ERROR: parser: parse error at or near \"-\"
- "
-
- - Function: pq-ntuples result
- Return the number of tuples in the query result. RESULT is a
- PGresult object.
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
- (pq-ntuples R)
- => 5
-
- - Function: pq-nfields result
- Return the number of fields in each tuple of the query result.
- RESULT is a PGresult object.
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
- (pq-nfields R)
- => 3
-
- - Function: pq-binary-tuples result
- Returns t if binary tuples are present in the results, nil
- otherwise. RESULT is a PGresult object.
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
- (pq-binary-tuples R)
- => nil
-
- - Function: pq-fname result field-index
- Returns the name of a specific field. RESULT is a PGresult object.
- FIELD-INDEX is the number of the column to select from. The first
- column is number zero.
-
- (let (i l)
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- (setq i (pq-nfields R))
- (while (>= (decf i) 0)
- (push (pq-fname R i) l))
- l)
- => ("id" "shikona" "rank")
-
- - Function: pq-fnumber result field-name
- Return the field number corresponding to the given field name. -1
- is returned on a bad field name. RESULT is a PGresult object.
- FIELD-NAME is a string representing the field name to find.
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
- (pq-fnumber R "id")
- => 0
- (pq-fnumber R "Not a field")
- => -1
-
- - Function: pq-ftype result field-num
- Return an integer code representing the data type of the specified
- column. RESULT is a PGresult object. FIELD-NUM is the field
- number.
-
- The return value of this function is the Object ID (Oid) in the
- database of the type. Further queries need to be made to various
- system tables in order to convert this value into something useful.
-
- - Function: pq-fmod result field-num
- Return the type modifier code associated with a field. Field
- numbers start at zero. RESULT is a PGresult object. FIELD-INDEX
- selects which field to use.
-
- - Function: pq-fsize result field-index
- Return size of the given field. RESULT is a PGresult object.
- FIELD-INDEX selects which field to use.
-
- (let (i l)
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- (setq i (pq-nfields R))
- (while (>= (decf i) 0)
- (push (list (pq-ftype R i) (pq-fsize R i)) l))
- l)
- => ((23 23) (25 25) (25 25))
-
- - Function: pq-get-value result tup-num field-num
- Retrieve a return value. RESULT is a PGresult object. TUP-NUM
- selects which tuple to fetch from. FIELD-NUM selects which field
- to fetch from.
-
- Both tuples and fields are numbered from zero.
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
- (pq-get-value R 0 1)
- => "Musashimaru"
- (pq-get-value R 1 1)
- => "Dejima"
- (pq-get-value R 2 1)
- => "Musoyama"
-
- - Function: pq-get-length result tup-num field-num
- Return the length of a specific value. RESULT is a PGresult
- object. TUP-NUM selects which tuple to fetch from. FIELD-NUM
- selects which field to fetch from.
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[5] - SELECT>
- (pq-get-length R 0 1)
- => 11
- (pq-get-length R 1 1)
- => 6
- (pq-get-length R 2 1)
- => 8
-
- - Function: pq-get-is-null result tup-num field-num
- Return t if the specific value is the SQL NULL. RESULT is a
- PGresult object. TUP-NUM selects which tuple to fetch from.
- FIELD-NUM selects which field to fetch from.
-
- - Function: pq-cmd-status result
- Return a summary string from the query. RESULT is a PGresult
- object.
- (pq-exec P "INSERT INTO xemacs_test
- VALUES (6, 'Wakanohana', 'Yokozuna');")
- => #<PGresult PGRES_COMMAND_OK[1] - INSERT 542086 1>
- (pq-cmd-status R)
- => "INSERT 542086 1"
- (setq R (pq-exec P "UPDATE xemacs_test SET rank='retired'
- WHERE shikona='Wakanohana';"))
- => #<PGresult PGRES_COMMAND_OK[1] - UPDATE 1>
- (pq-cmd-status R)
- => "UPDATE 1"
-
- Note that the first number returned from an insertion, like in the
- example, is an object ID number and will almost certainly vary from
- system to system since object ID numbers in Postgres must be unique
- across all databases.
-
- - Function: pq-cmd-tuples result
- Return the number of tuples if the last command was an
- INSERT/UPDATE/DELETE. If the last command was something else, the
- empty string is returned. RESULT is a PGresult object.
-
- (setq R (pq-exec P "INSERT INTO xemacs_test VALUES
- (7, 'Takanohana', 'Yokuzuna');"))
- => #<PGresult PGRES_COMMAND_OK[1] - INSERT 38688 1>
- (pq-cmd-tuples R)
- => "1"
- (setq R (pq-exec P "SELECT * from xemacs_test;"))
- => #<PGresult PGRES_TUPLES_OK[7] - SELECT>
- (pq-cmd-tuples R)
- => ""
- (setq R (pq-exec P "DELETE FROM xemacs_test
- WHERE shikona LIKE '%hana';"))
- => #<PGresult PGRES_COMMAND_OK[2] - DELETE 2>
- (pq-cmd-tuples R)
- => "2"
-
- - Function: pq-oid-value result
- Return the object id of the insertion if the last command was an
- INSERT. 0 is returned if the last command was not an insertion.
- RESULT is a PGresult object.
-
- In the first example, the numbers you will see on your local
- system will almost certainly be different, however the second
- number from the right in the unprintable PGresult object and the
- number returned by `pq-oid-value' should match.
- (setq R (pq-exec P "INSERT INTO xemacs_test VALUES
- (8, 'Terao', 'Maegashira');"))
- => #<PGresult PGRES_COMMAND_OK[1] - INSERT 542089 1>
- (pq-oid-value R)
- => 542089
- (setq R (pq-exec P "SELECT shikona FROM xemacs_test
- WHERE rank='Maegashira';"))
- => #<PGresult PGRES_TUPLES_OK[2] - SELECT>
- (pq-oid-value R)
- => 0
-
- - Function: pq-make-empty-pgresult conn status
- Create an empty pgresult with the given status. CONN a database
- connection object STATUS a value that can be returned by
- `pq-result-status'.
-
- The caller is responsible for making sure the return value gets
- properly freed.
-
-\1f
-File: lispref.info, Node: Synchronous Interface Functions, Next: Asynchronous Interface Functions, Prev: libpq Lisp Symbols and DataTypes, Up: XEmacs PostgreSQL libpq API
-
-Synchronous Interface Functions
--------------------------------
-
- - Function: pq-connectdb conninfo
- Establish a (synchronous) database connection. CONNINFO A string
- of blank separated options. Options are of the form "OPTION =
- VALUE". If VALUE contains blanks, it must be single quoted.
- Blanks around the equal sign are optional. Multiple option
- assignments are blank separated.
- (pq-connectdb "dbname=japanese port = 25432")
- => #<PGconn localhost:25432 steve/japanese>
- The printed representation of a database connection object has four
- fields. The first field is the hostname where the database server
- is running (in this case localhost), the second field is the port
- number, the third field is the database user name, and the fourth
- field is the name of the database.
-
- Database connection objects which have been disconnected and will
- generate an immediate error if they are used look like:
- #<PGconn BAD>
- Bad connections can be reestablished with `pq-reset', or deleted
- entirely with `pq-finish'.
-
- A database connection object that has been deleted looks like:
- (let ((P1 (pq-connectdb "")))
- (pq-finish P1)
- P1)
- => #<PGconn DEAD>
-
- Note that database connection objects are the most heavy weight
- objects in XEmacs Lisp at this writing, usually representing as
- much as several megabytes of virtual memory on the machine the
- database server is running on. It is wisest to explicitly delete
- them when you are finished with them, rather than letting garbage
- collection do it. An example idiom is:
-
- (let ((P (pq-connectiondb "")))
- (unwind-protect
- (progn
- (...)) ; access database here
- (pq-finish P)))
-
- The following options are available in the options string:
- `authtype'
- Authentication type. Same as PGAUTHTYPE. This is no longer
- used.
-
- `user'
- Database user name. Same as PGUSER.
-
- `password'
- Database password.
-
- `dbname'
- Database name. Same as PGDATABASE
-
- `host'
- Symbolic hostname. Same as PGHOST.
-
- `hostaddr'
- Host address as four octets (eg. like 192.168.1.1).
-
- `port'
- TCP port to connect to. Same as PGPORT.
-
- `tty'
- Debugging TTY. Same as PGTTY. This value is suppressed in
- the XEmacs Lisp API.
-
- `options'
- Extra backend database options. Same as PGOPTIONS. A
- database connection object is returned regardless of whether a
- connection was established or not.
-
- - Function: pq-reset conn
- Reestablish database connection. CONN A database connection
- object.
-
- This function reestablishes a database connection using the
- original connection parameters. This is useful if something has
- happened to the TCP link and it has become broken.
-
- - Function: pq-exec conn query
- Make a synchronous database query. CONN A database connection
- object. QUERY A string containing an SQL query. A PGresult
- object is returned, which in turn may be queried by its many
- accessor functions to retrieve state out of it. If the query
- string contains multiple SQL commands, only results from the final
- command are returned.
-
- (setq R (pq-exec P "SELECT * FROM xemacs_test;
- DELETE FROM xemacs_test WHERE id=8;"))
- => #<PGresult PGRES_COMMAND_OK[1] - DELETE 1>
-
- - Function: pq-notifies conn
- Return the latest async notification that has not yet been handled.
- CONN A database connection object. If there has been a
- notification, then a list of two elements will be returned. The
- first element contains the relation name being notified, the second
- element contains the backend process ID number. nil is returned
- if there aren't any notifications to process.
-
- - Function: PQsetenv conn
- Synchronous transfer of environment variables to a backend CONN A
- database connection object.
-
- Environment variable transfer is done as a normal part of database
- connection.
-
- Compatibility note: This function was present but not documented
- in versions of libpq prior to 7.0.
-
-\1f
-File: lispref.info, Node: Asynchronous Interface Functions, Next: Large Object Support, Prev: Synchronous Interface Functions, Up: XEmacs PostgreSQL libpq API
-
-Asynchronous Interface Functions
---------------------------------
-
- Making command by command examples is too complex with the
-asynchronous interface functions. See the examples section for
-complete calling sequences.
-
- - Function: pq-connect-start conninfo
- Begin establishing an asynchronous database connection. CONNINFO
- A string containing the connection options. See the documentation
- of `pq-connectdb' for a listing of all the available flags.
-
- - Function: pq-connect-poll conn
- An intermediate function to be called during an asynchronous
- database connection. CONN A database connection object. The
- result codes are documented in a previous section.
-
- - Function: pq-is-busy conn
- Returns t if `pq-get-result' would block waiting for input. CONN
- A database connection object.
-
- - Function: pq-consume-input conn
- Consume any available input from the backend. CONN A database
- connection object.
-
- Nil is returned if anything bad happens.
-
- - Function: pq-reset-start conn
- Reset connection to the backend asynchronously. CONN A database
- connection object.
-
- - Function: pq-reset-poll conn
- Poll an asynchronous reset for completion CONN A database
- connection object.
-
- - Function: pq-reset-cancel conn
- Attempt to request cancellation of the current operation. CONN A
- database connection object.
-
- The return value is t if the cancel request was successfully
- dispatched, nil if not (in which case conn->errorMessage is set).
- Note: successful dispatch is no guarantee that there will be any
- effect at the backend. The application must read the operation
- result as usual.
-
- - Function: pq-send-query conn query
- Submit a query to Postgres and don't wait for the result. CONN A
- database connection object. Returns: t if successfully submitted
- nil if error (conn->errorMessage is set)
-
- - Function: pq-get-result conn
- Retrieve an asynchronous result from a query. CONN A database
- connection object.
-
- NIL is returned when no more query work remains.
-
- - Function: pq-set-nonblocking conn arg
- Sets the PGconn's database connection non-blocking if the arg is
- TRUE or makes it non-blocking if the arg is FALSE, this will not
- protect you from PQexec(), you'll only be safe when using the
- non-blocking API. CONN A database connection object.
-
- - Function: pq-is-nonblocking conn
- Return the blocking status of the database connection CONN A
- database connection object.
-
- - Function: pq-flush conn
- Force the write buffer to be written (or at least try) CONN A
- database connection object.
-
- - Function: PQsetenvStart conn
- Start asynchronously passing environment variables to a backend.
- CONN A database connection object.
-
- Compatibility note: this function is only available with libpq-7.0.
-
- - Function: PQsetenvPoll conn
- Check an asynchronous environment variables transfer for
- completion. CONN A database connection object.
-
- Compatibility note: this function is only available with libpq-7.0.
-
- - Function: PQsetenvAbort conn
- Attempt to terminate an asynchronous environment variables
- transfer. CONN A database connection object.
-
- Compatibility note: this function is only available with libpq-7.0.
-
-\1f
-File: lispref.info, Node: Large Object Support, Next: Other libpq Functions, Prev: Asynchronous Interface Functions, Up: XEmacs PostgreSQL libpq API
-
-Large Object Support
---------------------
-
- - Function: pq-lo-import conn filename
- Import a file as a large object into the database. CONN a
- database connection object FILENAME filename to import
-
- On success, the object id is returned.
-
- - Function: pq-lo-export conn oid filename
- Copy a large object in the database into a file. CONN a database
- connection object. OID object id number of a large object.
- FILENAME filename to export to.
-
-\1f
-File: lispref.info, Node: Other libpq Functions, Next: Unimplemented libpq Functions, Prev: Large Object Support, Up: XEmacs PostgreSQL libpq API
-
-Other libpq Functions
----------------------
-
- - Function: pq-finish conn
- Destroy a database connection object by calling free on it. CONN
- a database connection object
-
- It is possible to not call this routine because the usual XEmacs
- garbage collection mechanism will call the underlying libpq
- routine whenever it is releasing stale `PGconn' objects. However,
- this routine is useful in `unwind-protect' clauses to make
- connections go away quickly when unrecoverable errors have
- occurred.
-
- After calling this routine, the printed representation of the
- XEmacs wrapper object will contain the string "DEAD".
-
- - Function: pq-client-encoding conn
- Return the client encoding as an integer code. CONN a database
- connection object
-
- (pq-client-encoding P)
- => 1
-
- Compatibility note: This function did not exist prior to libpq-7.0
- and does not exist in a non-Mule XEmacs.
-
- - Function: pq-set-client-encoding conn encoding
- Set client coding system. CONN a database connection object
- ENCODING a string representing the desired coding system
-
- (pq-set-client-encoding P "EUC_JP")
- => 0
-
- The current idiom for ensuring proper coding system conversion is
- the following (illustrated for EUC Japanese encoding):
- (setq P (pq-connectdb "..."))
- (let ((file-name-coding-system 'euc-jp)
- (pg-coding-system 'euc-jp))
- (pq-set-client-encoding "EUC_JP")
- ...)
- (pq-finish P)
- Compatibility note: This function did not exist prior to libpq-7.0
- and does not exist in a non-Mule XEmacs.
-
- - Function: pq-env-2-encoding
- Return the integer code representing the coding system in
- PGCLIENTENCODING.
-
- (pq-env-2-encoding)
- => 0
- Compatibility note: This function did not exist prior to libpq-7.0
- and does not exist in a non-Mule XEmacs.
-
- - Function: pq-clear res
- Destroy a query result object by calling free() on it. RES a
- query result object
-
- Note: The memory allocation systems of libpq and XEmacs are
- different. The XEmacs representation of a query result object
- will have both the XEmacs version and the libpq version freed at
- the next garbage collection when the object is no longer being
- referenced. Calling this function does not release the XEmacs
- object, it is still subject to the usual rules for Lisp objects.
- The printed representation of the XEmacs object will contain the
- string "DEAD" after this routine is called indicating that it is no
- longer useful for anything.
-
- - Function: pq-conn-defaults
- Return a data structure that represents the connection defaults.
- The data is returned as a list of lists, where each sublist
- contains info regarding a single option.
-