⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fumount.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
/*      @(#)fumount.c 1.1 92/07/30 SMI      *//*	Copyright (c) 1987 Sun Microsystems			*//*	ported from System V.3.1				*//*	Copyright (c) 1984 AT&T	*//*	  All Rights Reserved  	*//*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*//*	The copyright notice above does not evidence any   	*//*	actual or intended publication of such source code.	*/#ident	"@(#)fumount:fumount.c	1.9.3.1"#include <stdio.h>#include <sys/types.h>#include <rfs/rfs_misc.h>#include <rfs/message.h>#include <rfs/rfsys.h>#include <rfs/nserve.h>#include <rfs/fumount.h>#define MAXGRACE 3600char *malloc(), *getnode();char usage[] = "Usage: fumount [-w <seconds(1-%d)>] <resource>\n";extern	int	optind,	opterr;extern	char	*optarg;struct clnts *client;main(argc, argv)	int argc;	char **argv;{	char dom_resrc[(2 * MAXDNAME) + 2];	char cmd[24+SZ_RES];	char *grace = "0";	int i, advflg = 0;	while ((i = getopt(argc, argv, "w:")) != EOF)		switch(i) { 		case 'w':			grace = optarg;			if (((i = atoi(grace)) < 1) || (i > MAXGRACE)) {				fprintf(stderr, usage, MAXGRACE);				exit(1);			}			break;		case '?':			fprintf(stderr, usage, MAXGRACE);			exit(1);		}	if (optind >= argc) {		fprintf(stderr, usage, MAXGRACE);		exit(1);	}	optarg = argv[optind];	if (getuid() != 0) {		fprintf(stderr, "fumount: must be super user\n");		exit(1);	}	if (rfsys(RF_GETDNAME, dom_resrc, MAXDNAME) < 0) {		fprintf(stderr, "fumount: can't get domain name.\n");		perror("fumount");		exit(1);	}	if (nlload()){		fprintf(stderr, "fumount: can't get enough memory\n");		exit(1);	}	if (getnodes(argv[optind], advflg) == 1) {		fprintf(stderr, "fumount: %s not known\n", argv[optind]);		exit(1);	}	strcat(dom_resrc, ".");	strcat(dom_resrc, argv[optind]);	sprintf(cmd, "unadv %s >/dev/null 2>&1\n", argv[optind]);	if (system(cmd))		advflg = NOTADV;	/* execute remote warning script */	for (i = 0; client[i].flags != EMPTY; i++)		if (client[i].flags & KNOWN)			sndmes(client[i].sysid, grace, dom_resrc);	/* sleep 'grace' seconds */	sleep(atoi(grace));	/* blow them away */	if (rfsys(RF_FUMOUNT, argv[optind]) == -1) {		if (advflg & NOTADV) {			fprintf(stderr, "fumount: %s not known\n", argv[optind]);			exit(1);		} else {			if (client[0].flags != EMPTY) {	/* at least 1 client */				perror("fumount: failure due to internal error");				exit(1);			}		/* failure of rfsys is not an error if no clients were 		   using the resource */		}	}	exit(0);	/* NOTREACHED */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -