#include #include #include #include #include #include #include #define PATH_SEP '/' #define LOCK_F "/etc/smount.lock" #ifdef _BSD_ # include extern char *sys_errlist[]; # define raise(s) kill(getpid(),(s)) # define strerror(e) sys_errlist[(e)] #endif static char __ident[] = "@(#)(c)SPDsoft, Wed Mar 15, 1995"; #define VERS_STR ((char*)&__ident[4]) void usage(void); int launch( char *cmd[], int *status ); extern int errno; char *app; #define N_D 4 char *args[N_D][8]= { { NULL,"-t","4.2","-o","ro,nosuid","/dev/sr0","/cdrom", NULL }, { NULL,"-t","hsfs","-o","ro,nosuid","/dev/sr0","/cdrom", NULL }, { NULL,"-t","pcfs","-o","rw,nosuid","/dev/fd0","/pcfs", NULL }, { NULL,"-t","pcfs","-o","ro,nosuid","/dev/fd0","/pcfs", NULL }, }; char *names[N_D]= {"cdrom","cdrom_iso","dos","dos_ronly"}; char *cmds[3]={"/usr/etc/mount","/usr/etc/umount","/bin/eject"}; main(int argc, char **argv ) { int i, opt, status; int unmount=0; int quiet=0; struct stat sbp; extern char *optarg; extern int optind,opterr; if ((app = strrchr(argv[0], PATH_SEP)) != NULL) app = app+1; else app = argv[0]; if(0==stat(LOCK_F,&sbp)) { fprintf(stderr, "%s: Sorry, %s locked by root. Try again later\n", app, app); exit(EACCES); } while ( (opt=getopt(argc,argv,"huV")) != EOF ) { switch(opt) { case 'V': fprintf(stderr, "%s: %s\n", app, VERS_STR); exit(0); break; case 'u': unmount=1; break; /* case 'q':*/ /* quiet=1;*/ /* break;*/ case 'h': default: usage(); break; } } if ((argc-optind)!=1) usage(); for(i=0;i