mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-28 20:45:24 +00:00
117 lines
2.8 KiB
C
117 lines
2.8 KiB
C
|
/*
|
||
|
* Copyright 2013, Tan Chee Eng (@tan-ce)
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* pts.h
|
||
|
*
|
||
|
* Manages the pseudo-terminal driver on Linux/Android and provides some
|
||
|
* helper functions to handle raw input mode and terminal window resizing
|
||
|
*/
|
||
|
|
||
|
#ifndef _PTS_H_
|
||
|
#define _PTS_H_
|
||
|
|
||
|
/**
|
||
|
* pts_open
|
||
|
*
|
||
|
* Opens a pts device and returns the name of the slave tty device.
|
||
|
*
|
||
|
* Arguments
|
||
|
* slave_name the name of the slave device
|
||
|
* slave_name_size the size of the buffer passed via slave_name
|
||
|
*
|
||
|
* Return Values
|
||
|
* on failure either -2 or -1 (errno set) is returned.
|
||
|
* on success, the file descriptor of the master device is returned.
|
||
|
*/
|
||
|
int pts_open(char *slave_name, size_t slave_name_size);
|
||
|
|
||
|
/**
|
||
|
* set_stdin_raw
|
||
|
*
|
||
|
* Changes stdin to raw unbuffered mode, disables echo,
|
||
|
* auto carriage return, etc.
|
||
|
*
|
||
|
* Return Value
|
||
|
* on failure -1, and errno is set
|
||
|
* on success 0
|
||
|
*/
|
||
|
int set_stdin_raw(void);
|
||
|
|
||
|
/**
|
||
|
* restore_stdin
|
||
|
*
|
||
|
* Restore termios on stdin to the state it was before
|
||
|
* set_stdin_raw() was called. If set_stdin_raw() was
|
||
|
* never called, does nothing and doesn't return an error.
|
||
|
*
|
||
|
* This function is async-safe.
|
||
|
*
|
||
|
* Return Value
|
||
|
* on failure, -1 and errno is set
|
||
|
* on success, 0
|
||
|
*/
|
||
|
int restore_stdin(void);
|
||
|
|
||
|
/**
|
||
|
* watch_sigwinch_async
|
||
|
*
|
||
|
* After calling this function, if the application receives
|
||
|
* SIGWINCH, the terminal window size will be read from
|
||
|
* "input" and set on "output".
|
||
|
*
|
||
|
* NOTE: This function blocks SIGWINCH and spawns a thread.
|
||
|
*
|
||
|
* Arguments
|
||
|
* master A file descriptor of the TTY window size to follow
|
||
|
* slave A file descriptor of the TTY window size which is
|
||
|
* to be set on SIGWINCH
|
||
|
*
|
||
|
* Return Value
|
||
|
* on failure, -1 and errno will be set. In this case, no
|
||
|
* thread has been spawned and SIGWINCH will not be
|
||
|
* blocked.
|
||
|
* on success, 0
|
||
|
*/
|
||
|
int watch_sigwinch_async(int master, int slave);
|
||
|
|
||
|
/**
|
||
|
* watch_sigwinch_cleanup
|
||
|
*
|
||
|
* Cause the SIGWINCH watcher thread to terminate
|
||
|
*/
|
||
|
void watch_sigwinch_cleanup(void);
|
||
|
|
||
|
/**
|
||
|
* pump_stdin_async
|
||
|
*
|
||
|
* Forward data from STDIN to the given FD
|
||
|
* in a seperate thread
|
||
|
*/
|
||
|
void pump_stdin_async(int outfd);
|
||
|
|
||
|
/**
|
||
|
* pump_stdout_blocking
|
||
|
*
|
||
|
* Forward data from the FD to STDOUT.
|
||
|
* Returns when the remote end of the FD closes.
|
||
|
*
|
||
|
* Before returning, restores stdin settings.
|
||
|
*/
|
||
|
void pump_stdout_blocking(int infd);
|
||
|
|
||
|
#endif
|