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.
This commit is contained in:
Joel Sherrill
2001-05-24 21:58:39 +00:00
parent e565720aad
commit b2712e35b9
19 changed files with 1400 additions and 160 deletions

View File

@@ -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);