#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* **************************************************************** */ /* */ /* SILA Shell Commands */ /* */ /* **************************************************************** */ /* String to pass to system (). This is for the LIST, VIEW and RENAME commands. */ static char syscom[PATH_MAX]; /* List the file(s) named in arg. */ int com_ls( char *arg ) { if( !arg ) arg = ""; sprintf( syscom, "ls -FClg %s", arg ); return( system( syscom ) ); } int com_id( char *arg ) { if( !arg ) arg = ""; sprintf( syscom, "id %s", arg ); return( system( syscom ) ); } int com_more( char *arg ) { if( !valid_argument( "more", arg ) ) return( 1 ); sprintf( syscom, "more %s", arg ); return( system( syscom ) ); } int com_vi( char *arg ) { if( !valid_argument( "vi", arg ) ) return( 1 ); sprintf( syscom, "vi %s", arg ); return( system( syscom ) ); } int com_rename( char *arg ) { too_dangerous( "rename" ); return( 1 ); } int com_stat( char *arg ) { struct stat finfo; if( !valid_argument( "stat", arg ) ) return( 1 ); if( stat( arg, &finfo ) == -1 ) { perror( arg ); return( 1 ); } printf( "Statistics for `%s':\n", arg ); printf( "%s has %ld link%s, and is %ld byte%s in length.\n", arg, finfo.st_nlink, (finfo.st_nlink == 1) ? "" : "s", finfo.st_size, (finfo.st_size == 1) ? "" : "s#include "); printf( "Inode Last Change at: %s", ctime( &finfo.st_ctime ) ); printf( " Last access at: %s", ctime( &finfo.st_atime ) ); printf( " Last modified at: %s", ctime( &finfo.st_mtime ) ); return( 0 ); } int com_delete( char *arg ) { too_dangerous( "delete" ); return( 1 ); } /* Change to the directory ARG. */ int com_cd( char *arg ) { if( !strcmp( arg, "~" ) ) { arg = getenv( "HOME" ); } if( chdir( arg ) == -1 ) { perror( arg ); return( 1 ); } com_pwd( "" ); return( 0 ); } /* Print out the current working directory. */ int com_pwd( char *ignore ) { char dir[PATH_MAX], *s; s = getcwd( dir, PATH_MAX ); if( s == 0 ) { printf( "Error getting pwd: %s\n", dir ); return( 1 ); } printf( "Current directory is: %s\n", dir ); return( 0 ); } int com_ping( char *arg ) { if( !valid_argument( "ping", arg ) ) return( 1 ); sprintf( syscom, "ping %s", arg ); return( system( syscom ) ); } int com_poweroff( char *arg ) { if( !arg ) arg = ""; sprintf( syscom, "/sbin/poweroff %s", arg ); return( system( syscom ) ); }