[Previous] [Contents] [Index] [Next]

tcinject()

Inject characters into a device's input buffer

Synopsis:

#include <termios.h>

int tcinject( int fd, 
              char *buf, 
              int n );

Library:

libc

Description:

The tcinject() function injects n characters pointed to by buf into the input buffer of the device given in fd. If n is positive, the characters are written to the canonical (edited) queue. If n is negative, the characters are written to the raw queue.

Note that while injecting into the canonical queue, editing characters in buf are acted upon as though the user entered them directly from the device. If buf doesn't contain a newline ('\n'), carriage return ('\r') or a data-forwarding character such as an EOF, data doesn't become available for reading. If buf does contain a data-forwarding character, it should contain only one as the last character in buf.

This function is useful for implementing command-line recall algorithms by injecting recalled lines into the canonical queue.

Returns:

0
Success.
-1
An error occurred; errno is set.

Errors:

EBADF
The fd argument is invalid or the file isn't opened for read.
ENOSYS
This function isn't supported for the device opened.

Examples:

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>

int main( void )
{
  char *p = "echo Hello world!\n";

  /* Inject the line all at once */
  tcinject(0, p, strlen(p));

  /* Inject the line one character at a time */
  while(*p)
    tcinject(0, p++, 1);
  return EXIT_SUCCESS;
}

Classification:

QNX 6

Safety:
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

[Previous] [Contents] [Index] [Next]