Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ InputCB(3X) — DeltaWindows 1.3.3 Release 4 Version 4.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

 

NAME

XtInputCallbackProc − interface definition for procedure to handle file, pipe, or socket activity. 

SYNOPSIS

typedef void (∗XtInputCallbackProc)(XtPointer, int ∗, XtInputId ∗);

XtPointer client_data; int ∗source; XtInputId ∗id;

Inputs

client_data
Specifies the data that was registered with this procedure in XtAppAddInput(). 

sourceSpecifies the file descriptor (on POSIX systems) that generated the event. 

idSpecifies the ID that was returned when this procedure was registered with XtAppAddInput() call. 

DESCRIPTION

An XtInputCallbackProc is registered with XtAppAddInput().  It is called when there is activity of the specified type (read, write, or error) on a specified file descriptor (which can be a file, pipe, or socket). 

An XtInputCallbackProc should do whatever is necessary to handle the activity on the alternate event source.  If EOF is read on the descriptor, the procedure can un-register itself by passing its id argument to XtRemoveInput(). 

USAGE

An XtInputCallbackProc is inherently operating-system-dependent and will have to be ported when the widget or application is ported to a new operating system.  On non-POSIX systems, the source argument is some OS-dependent identifier of an input source. 

EXAMPLE

The procedure below is an XtInputCallbackProc from the xconsole client (which is new in X11R5).  Note that it reads input with the POSIX read() system call, and that it closes the file descriptor and removes the input source if it reaches EOF or gets an error on the input source.  static void inputReady (w, source, id)
    XtPointer   w;
    int         ∗source;
    XtInputId   ∗id; {
    char    buffer[1025];
    int     n;
 
    n = read (∗source, buffer, sizeof (buffer) - 1);
    if (n <= 0)
    {
        fclose (input);
        XtRemoveInput (∗id);
    }
    Notify ();
    buffer[n] = ’ ’;
    if (app_resources.stripNonprint)
    {
        stripNonprint (buffer);
        n = strlen (buffer);
    }
    TextAppend ((Widget) text, buffer, n); } This procedure is registered with the following call:
    input_id = XtAddInput (fileno (input), (XtPointer) XtInputReadMask,
                           inputReady, (XtPointer) text);

SEE ALSO

XtAppAddInputUNIX SYSTEM V/68, XtRemoveInputUNIX SYSTEM V/68. 

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026