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

📄 selsub.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic	char	*sccsid = "@(#)selsub.c	4.1	(ULTRIX)	7/17/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1986, 1988 by			* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//* * Modification history * * 15 Sep 1988 - D. Long *	Fixed null pointer problems for PMAX. */#include "stdio.h"#include "sys/types.h"#include "sys/stat.h"#include "lrnref.h"selsub(argc,argv)char *argv[];{	char ans1[100];	static char ans2[30];	static char dirname[20];	static char subname[20];	struct stat statbuf;	if (argc > 1 && argv[1][0] == '-') {		direct = argv[1]+1;		argc--;		argv++;	}	if (chdir(direct) != 0) {		perror(direct);		fprintf(stderr, "Selsub:  couldn't cd to non-standard directory\n");		exit(1);	}	sname = argc > 1 ? argv[1] : 0;	if (argc > 2) {		strcpy (level=ans2, argv[2]);		if (strcmp(level, "-") == 0)	/* no lesson name is - */			ask = 1;		else			again = 1;	/* treat as if "again" lesson */	}	else		level = 0;	if (argc > 3 )		speed = atoi(argv[3]);	if (!sname) {		printf("These are the available courses -\n");		list("Linfo");		printf("If you want more information about the courses,\n");		printf("or if you have never used 'learn' before,\n");		printf("press RETURN; otherwise type the name of\n");		printf("the course you want, followed by RETURN.\n");		fflush(stdout);		if (gets(sname=subname) == NULL)			exit(0);		if (sname[0] == '\0') {			list("Xinfo");			do {				printf("\nWhich subject?  ");				fflush(stdout);				if (gets(sname=subname) == NULL)					exit(0);			} while (sname[0] == '\0');		}	}	chknam(sname);	stat(sname, &statbuf);	total = statbuf.st_size / 16 - 2;	/* size/dirsize-(.+..) */	if (!level) {		printf("If you were in the middle of this subject\n");		printf("and want to start where you left off, type\n");		printf("the last lesson number the computer printed.\n");		printf("If you don't know the number, type in a word\n");		printf("you think might appear in the lesson you want,\n");		printf("and I will look for the first lesson containing it.\n");		printf("To start at the beginning, just hit RETURN.\n");		fflush(stdout);		if (gets(ans2) == NULL)			exit(0);		if (ans2[0]==0)			strcpy(ans2,"0");		level=ans2;	}	/* make new directory for user to play in */	if (chdir("/tmp") != 0) {		perror("/tmp");		fprintf(stderr, "Selsub:  couldn't cd to public directory\n");		exit(1);	}	(void) sprintf(dir=dirname, "pl%da", getpid());	(void) sprintf(ans1, "mkdir %s", dir);	system(ans1);	if (chdir(dir) < 0) {		perror(dir);		fprintf(stderr, "Selsub:  couldn't make play directory with %s.\nBye.\n", ans1);		exit(1);	}	/* after this point, we have a working directory. */	/* have to call wrapup to clean up */	(void) sprintf(ans1, "%s/%s/Init", direct, sname);	if (access(ans1, 04)==0) {		(void) sprintf(ans1, "%s/%s/Init %s", direct, sname, level);		if (system(ans1) != 0) {			printf("Leaving learn.\n");			wrapup(1);		}	}}chknam(name)char *name;{	if (access(name, 05) < 0) {		printf("Sorry, there is no subject or lesson named %s.\nBye.\n", name);		exit(1);	}}

⌨️ 快捷键说明

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