ttdt_sender_imprint_on(3)

NAME
ttdt_sender_imprint_on - act like a child of the specified tool

SYNOPSIS
#include <Tt/tttk.h>

Tt_status ttdt_sender_imprint_on(const char *handler,
	Tt_message contract,
	char **display,
	int *width,
	int *height,
	int *xoffset,
	int *yoffset,
	XtAppContext app2run,
	int ms_timeout);

DESCRIPTION
The ttdt_sender_imprint_on() function is used to make the calling tool act equivalently to a child of another specified tool. The calling tool adopts the other tool's X11 display, locale, and current working directory. It also learns the other tool's X11 geometry, so that it may position itself appropriately.

If the handler argument is non-NULL, the requests are addressed to that procid using TT_HANDLER. If handler is NULL and the contract argument is non-NULL, the requests are addressed to the tt_message_sender(3) of the contract, using TT_HANDLER.

The contract argument is passed to tttk_message_create(3) as the context argument.

If the display argument is not NULL, ttdt_sender_imprint_on() returns the other tool's display in *display. If display is NULL, ttdt_sender_imprint_on() sets the DISPLAY environment variable to the other tool's display.

If each of the width, height, xoffset, and yoffset arguments are NULL, then ttdt_sender_imprint_on() does not send the other tool a Get_Geometry request.

The ttdt_sender_imprint_on() function passes the app2run and ms_timeout arguments to tttk_block_while(3), blocking on the replies to the requests it sends.

If the display argument is not NULL, ttdt_sender_imprint_on() sets *display to a string that can be freed with tt_free().

If for some reason no width or height is returned by the other tool, ttdt_sender_imprint_on() sets *width or *height to -1. If no positional information is returned, ttdt_sender_imprint_on() sets *xoffset and *yoffset to {INT_MAX}.

RETURN VALUE
Upon successful completion, the ttdt_sender_imprint_on() function returns the status of the operation as one of the following Tt_status values:

    The operation completed successfully.
    One or more of the sent requests did not complete within ms_timeout milliseconds.
    There is insufficient memory available to perform the function.
    The ttsession(1) process is not running and the ToolTalk service cannot restart it.
    The ToolTalk service has more active messages than it can handle. (The maximum number of active messages is implementation specific, but is at least 2000.)
    The specified process identifier is out of date or invalid.

APPLICATION USAGE
If both the handler and contract are zero, the requests are addressed to no tool in particular, using TT_PROCEDURE; this is not recommended.

SEE ALSO
Tttttk(5), tt_free(3), tt_message_sender(3), tttk_block_while(3), tttk_message_create(3).