diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-05-24 21:58:39 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-05-24 21:58:39 +0000 |
commit | b2712e35b948d7ab37cf6ef46bcdfea678506444 (patch) | |
tree | e7575dbae5f5861131ac9cf03cdea1bfc7447269 /cpukit/libmisc/shell/shell.h | |
parent | 2000-05-24 Fernando Ruiz Casas <fernando.ruiz@ctv.es> (diff) | |
download | rtems-b2712e35b948d7ab37cf6ef46bcdfea678506444.tar.bz2 |
2000-05-24 Fernando Ruiz Casas <fernando.ruiz@ctv.es>
* monitor/mon-prmisc.c: Correct print line.
* shell/Makefile.am: Added new file telnetd.c.
* shell/telnetd.c, shell/telnetd.h, shell/pty.c: New files.
* shell/shell.c, shell/cmds.c, shell/shell.h: Numerous improvments:
- The shell_init has a new parameter 'forever' because in
/dev/console you need that this process runs forever but in
tcp/ip not. (respawn?)
- A new task for every session opened trought tcp/ip telnet client.
(the chargen,daytime and more are possible of implementation but
I ask me if they are necesary)
- Exit from the session delete the task and when the client fails too.
- More cmds have been implemented. (very reduced version of these)
umask, chmod, id, whoami, rm, cat, ...
- A reduced line edit has been implemented.
Ctrl-C abort the input,
Ctrl-d in the first position gives EOF (logout).
'\b' and DEL makes the rubout operation.
I think that readline() for every session spents a lot of resources.
Diffstat (limited to 'cpukit/libmisc/shell/shell.h')
-rw-r--r-- | cpukit/libmisc/shell/shell.h | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/cpukit/libmisc/shell/shell.h b/cpukit/libmisc/shell/shell.h index 89c70506c4..3b9522f10a 100644 --- a/cpukit/libmisc/shell/shell.h +++ b/cpukit/libmisc/shell/shell.h @@ -45,21 +45,61 @@ typedef struct { char * taskname; tcflag_t tcflag; /* user extensions */ + int exit_shell; /* logout */ + int forever ; /* repeat login */ int errorlevel; int mdump_adr; } shell_env_t; int shell_scanline(char * line,int size,FILE * in,FILE * out) ; +void cat_file(FILE * out,char *name); rtems_status_code shell_init(char * task_name , rtems_unsigned32 task_stacksize,/*0 default*/ rtems_task_priority task_priority , char * devname , - tcflag_t tcflag ); + tcflag_t tcflag , + int forever ); extern shell_env_t global_shell_env, * current_shell_env; /*--------*/ +/* pty.c */ +/*--------*/ + +char * get_pty(int socket); + + +rtems_device_driver pty_initialize( + rtems_device_major_number major, + rtems_device_minor_number minor, + void *arg); +rtems_device_driver pty_open( + rtems_device_major_number major, + rtems_device_minor_number minor, + void * arg); +rtems_device_driver pty_close( + rtems_device_major_number major, + rtems_device_minor_number minor, + void * arg); +rtems_device_driver pty_read( + rtems_device_major_number major, + rtems_device_minor_number minor, + void * arg); +rtems_device_driver pty_write( + rtems_device_major_number major, + rtems_device_minor_number minor, + void * arg); +rtems_device_driver pty_control( + rtems_device_major_number major, + rtems_device_minor_number minor, + void * arg); + + +#define PTY_DRIVER_TABLE_ENTRY \ + { pty_initialize , pty_open , pty_close , \ + pty_read , pty_write , pty_control } +/*--------*/ /* cmds.c */ /*--------*/ int str2int(char * s); |