Data Structures | Defines | Functions | Variables

ext/pty/pty.c File Reference

#include "ruby/config.h"
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <fcntl.h>
#include <errno.h>
#include <pwd.h>
#include <ctype.h>
#include "ruby/ruby.h"
#include "ruby/io.h"
#include "ruby/util.h"
#include <signal.h>
Include dependency graph for pty.c:

Go to the source code of this file.

Data Structures

struct  pty_info
struct  exec_info
struct  child_info

Defines

#define WIFSTOPPED(status)   (((status) & 0xff) == 0x7f)
#define DEVICELEN   16

Functions

static VALUE echild_status (VALUE self)
static void getDevice (int *, int *, char[DEVICELEN], int)
static VALUE pty_exec (VALUE v)
static int chfunc (void *data)
static void establishShell (int argc, VALUE *argv, struct pty_info *info, char SlaveName[DEVICELEN])
static int no_mesg (char *slavedevice, int nomesg)
static int get_device_once (int *master, int *slave, char SlaveName[DEVICELEN], int nomesg, int fail)
static VALUE pty_close_pty (VALUE assoc)
static VALUE pty_open (VALUE klass)
static VALUE pty_detach_process (struct pty_info *info)
static VALUE pty_getpty (int argc, VALUE *argv, VALUE self)
static void raise_from_check (pid_t pid, int status)
static VALUE pty_check (int argc, VALUE *argv, VALUE self)
void Init_pty ()

Variables

static const char MasterDevice [] = "/dev/pty%s"
static const char SlaveDevice [] = "/dev/tty%s"
static const char *const deviceNo []
static VALUE eChildExited
static VALUE cPTY

Define Documentation

#define DEVICELEN   16

Definition at line 45 of file pty.c.

#define WIFSTOPPED (   status  )     (((status) & 0xff) == 0x7f)

Definition at line 28 of file pty.c.

Referenced by raise_from_check().


Function Documentation

static int chfunc ( void *  data  )  [static]
static VALUE echild_status ( VALUE  self  )  [static]

Definition at line 126 of file pty.c.

References rb_intern, and rb_ivar_get().

Referenced by Init_pty().

static void establishShell ( int  argc,
VALUE argv,
struct pty_info info,
char  SlaveName[DEVICELEN] 
) [static]
static int get_device_once ( int *  master,
int *  slave,
char  SlaveName[DEVICELEN],
int  nomesg,
int  fail 
) [static]
static void getDevice ( int *  master,
int *  slave,
char  SlaveName[DEVICELEN],
int  nomesg 
) [static]

Definition at line 416 of file pty.c.

References get_device_once(), and rb_gc().

Referenced by establishShell(), and pty_open().

void Init_pty (  ) 
static int no_mesg ( char *  slavedevice,
int  nomesg 
) [static]

Definition at line 277 of file pty.c.

Referenced by get_device_once().

static VALUE pty_check ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 618 of file pty.c.

References NUM2PIDT, raise_from_check(), rb_last_status_get(), rb_scan_args(), rb_waitpid(), RTEST, and WNOHANG.

Referenced by Init_pty().

static VALUE pty_close_pty ( VALUE  assoc  )  [static]

Definition at line 425 of file pty.c.

References rb_ary_entry(), rb_io_close(), RFILE, T_FILE, and TYPE.

Referenced by pty_open().

static VALUE pty_detach_process ( struct pty_info info  )  [static]

Definition at line 516 of file pty.c.

References pty_info::child_pid, and rb_detach_process().

Referenced by pty_getpty().

static VALUE pty_exec ( VALUE  v  )  [static]

Definition at line 144 of file pty.c.

References exec_info::argc, exec_info::argv, and rb_f_exec().

Referenced by chfunc().

static VALUE pty_getpty ( int  argc,
VALUE argv,
VALUE  self 
) [static]
static VALUE pty_open ( VALUE  klass  )  [static]
static void raise_from_check ( pid_t  pid,
int  status 
) [static]

Definition at line 581 of file pty.c.

References buf, eChildExited, kill(), rb_exc_new2(), rb_exc_raise(), rb_iv_set(), rb_last_status_get(), snprintf, and WIFSTOPPED.

Referenced by pty_check().


Variable Documentation

VALUE cPTY [static]

Definition at line 633 of file pty.c.

Referenced by Init_pty().

const char * const deviceNo[] [static]
Initial value:
 {
                "p0","p1","p2","p3","p4","p5","p6","p7",
                "p8","p9","pa","pb","pc","pd","pe","pf",
                "q0","q1","q2","q3","q4","q5","q6","q7",
                "q8","q9","qa","qb","qc","qd","qe","qf",
                "r0","r1","r2","r3","r4","r5","r6","r7",
                "r8","r9","ra","rb","rc","rd","re","rf",
                "s0","s1","s2","s3","s4","s5","s6","s7",
                "s8","s9","sa","sb","sc","sd","se","sf",
                0,
        }

Definition at line 97 of file pty.c.

Referenced by get_device_once().

VALUE eChildExited [static]

Definition at line 123 of file pty.c.

Referenced by Init_pty(), and raise_from_check().

const char MasterDevice[] = "/dev/pty%s" [static]

Definition at line 95 of file pty.c.

Referenced by get_device_once().

const char SlaveDevice[] = "/dev/tty%s" [static]

Definition at line 96 of file pty.c.

Referenced by get_device_once().