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

📄 cmds.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 2 页
字号:
setprompt(){	interactive = !interactive;	printf("Interactive mode %s.\n", onoff(interactive));}/* * Toggle metacharacter interpretation * on local file names. *//*VARARGS*/setglob(){		doglob = !doglob;	printf("Globbing %s.\n", onoff(doglob));}/* * Set debugging mode on/off and/or * set level of debugging. *//*VARARGS*/setdebug(argc, argv)	char *argv[];{	int val;	if (argc > 1) {		val = atoi(argv[1]);		if (val < 0) {			printf("%s: bad debugging value.\n", argv[1]);			return;		}	} else		val = !debug;	debug = val;	printf("Debugging %s (debug=%d).\n", onoff(debug), debug);}/* * Set current working directory * on remote machine. */cd(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(remote-directory) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {		printf("%s remote-directory\n", argv[0]);		return;	}	(void) docd(argv[1]);}/* * Set current working directory * on local machine. */lcd(argc, argv)	char *argv[];{	char buf[MAXPATHLEN];	if (argc < 2)		argc++, argv[1] = home;	if (argc != 2) {		printf("%s local-directory\n", argv[0]);		return;	}	if (!globulize(&argv[1]))		return;	if (chdir(argv[1]) < 0) {		perror(argv[1]);		return;	}	printf("Local directory now %s\n", getwd(buf));}/* * Delete a single file. */delete(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(remote-file) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {		printf("%s remote-file\n", argv[0]);		return;	}	(void) dodelete( argv[1]);}/* * Delete multiple files. */mdelete(argc, argv)	char *argv[];{	char *cp;	if (argc < 2) {		strcat(line, " ");		printf("(remote-files) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {		printf("%s remote-files\n", argv[0]);		return;	}	while ((cp = remglob(argc, argv)) != NULL)		if (confirm(argv[0], cp))			(void) dodelete( cp);}/* * Rename a remote file. */renamefile(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(from-name) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {usage:		printf("%s from-name to-name\n", argv[0]);		return;	}	if (argc < 3) {		strcat(line, " ");		printf("(to-name) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 3) 		goto usage;	dorename(argv[1], argv[2]);}/* * Copy a remote file. */copyfile(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(from-name) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {usage:		printf("%s from-name to-name\n", argv[0]);		return;	}	if (argc < 3) {		strcat(line, " ");		printf("(to-name) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 3) 		goto usage;	docopy("COPY", argv[1], argv[2]);}/* * Move a remote file. */movefile(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(from-name) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {usage:		printf("%s from-name to-name\n", argv[0]);		return;	}	if (argc < 3) {		strcat(line, " ");		printf("(to-directory) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 3) 		goto usage;	docopy("MOVE", argv[1], argv[2]);}/* * Get a directory listing * of remote files. */ls(argc, argv)	char *argv[];{	char *cmd;	if (argc < 2)		argc++, argv[1] = "*";	if (argc < 3)		argc++, argv[2] = "-";	if (argc > 3) {		printf("usage: %s remote-directory local-file\n", argv[0]);		return;	}	cmd = argv[0][0] == 'l' ? "NLST" : "LIST";	if (strcmp(argv[2], "-") && !globulize(&argv[2]))		return;	recvrequest(cmd, argv[2], argv[1], "w");}/* * Get a directory listing * of multiple remote files. */mls(argc, argv)	char *argv[];{	char *cmd, *mode, *cp, *dest;	if (argc < 2) {		strcat(line, " ");		printf("(remote-files) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 3) {		strcat(line, " ");		printf("(local-file) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 3) {		printf("%s remote-files local-file\n", argv[0]);		return;	}	dest = argv[argc - 1];	argv[argc - 1] = NULL;	if (strcmp(dest, "-"))		if (globulize(&dest) && confirm("local-file", dest))			return;	cmd = argv[0][1] == 'l' ? "NLST" : "LIST";	for (mode = "w"; cp = remglob(argc, argv); mode = "a")		if (confirm(argv[0], cp))			recvrequest(cmd, argv[2], argv[1], "w");}/* * Unify Accesslists for a single file. */unify(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(remote-directory) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {		printf("%s remote-directory\n", argv[0]);		return;	}	(void) dounify( argv[1]);}/* * Do a shell escape */shell(argc, argv)	char *argv[];{	int pid, status, (*old1)(), (*old2)();	char shellnam[40], *shell, *namep;	char **cpp, **gargs;	old1 = signal (SIGINT, SIG_IGN);	old2 = signal (SIGQUIT, SIG_IGN);	if ((pid = fork()) == 0) {		for (pid = 3; pid < 20; pid++)			close(pid);		signal(SIGINT, SIG_DFL);		signal(SIGQUIT, SIG_DFL);		if (argc <= 1) {			shell = getenv("SHELL");			if (shell == NULL)				shell = "/bin/sh";			namep = rindex(shell,'/');			if (namep == NULL)				namep = shell;			strcpy(shellnam,"-");			strcat(shellnam, ++namep);			if (strcmp(namep, "sh") != 0)				shellnam[0] = '+';			if (debug) {				printf ("%s\n", shell);				fflush (stdout);			}			execl(shell, shellnam, 0);			perror(shell);			exit(1);		}		cpp = &argv[1];		if (argc > 2) {			if ((gargs = glob(cpp)) != NULL)				cpp = gargs;			if (globerr != NULL) {				printf("%s\n", globerr);				exit(1);			}		}		if (debug) {			register char **zip = cpp;			printf("%s", *zip);			while (*++zip != NULL)				printf(" %s", *zip);			printf("\n");			fflush(stdout);		}		execvp(argv[1], cpp);		perror(argv[1]);		exit(1);	}	if (pid > 0)		while (wait(&status) != pid)			;	signal(SIGINT, old1);	signal(SIGQUIT, old2);	if (pid == -1)		perror("Try again later");	return (0);}/* * Send new user information (re-login) */user(argc, argv)	int argc;	char **argv;{	if (argc < 2) {		login(0,0);	}	if (argc > 3) {		printf("usage: %s username [password]\n", argv[0]);		return (0);	}	login(argv[1], argv[2]);	return (1);}/* * Print working directory. *//*VARARGS*/pwd(){	dopwd();}/* * Make a directory. */makedir(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(directory-name) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {		printf("%s directory-name\n", argv[0]);		return;	}	domakedir(argv[1]);}/* * Remove a directory. */removedir(argc, argv)	char *argv[];{	if (argc < 2) {		strcat(line, " ");		printf("(directory-name) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {		printf("%s directory-name\n", argv[0]);		return;	}	doremovedir(argv[1]);}/* * Terminate session and exit. *//*VARARGS*/quit(){	disconnect();	exit(0);}/* * Terminate session, but don't exit. */disconnect(){	extern FILE *cout;	extern int data;	if (!connected)		return;	logout();	CourierClose(connected);	connected = (CourierConnection *)0;}confirm(cmd, file)	char *cmd, *file;{	char line[BUFSIZ];	if (!interactive) {		if (verbose)			printf("%s %s\n", cmd, file);		return (1);	}	printf("%s %s? ", cmd, file);	fflush(stdout);	gets(line);	return (*line != 'n' && *line != 'N');}fatal(msg)	char *msg;{	fprintf(stderr, "ftp: %s\n");	exit(1);}/* * Glob a local file name specification with * the expectation of a single return value. * Can't control multiple values being expanded * from the expression, we return only the first. */globulize(cpp)	char **cpp;{	char **globbed;	if (!doglob)		return (1);	globbed = glob(*cpp);	if (globerr != NULL) {		printf("%s: %s\n", *cpp, globerr);		if (globbed)			blkfree(globbed);		return (0);	}	if (globbed) {		*cpp = *globbed++;		/* don't waste too much memory */		if (*globbed)			blkfree(globbed);	}	return (1);}whatis(argc, argv)	int argc;	char *argv[];{	FILE *fin, *fopen();	int type;	char *typetostring();	if (argc < 2) {		strcat(line, " ");		printf("(local-file) ");		gets(&line[strlen(line)]);		makeargv();		argc = margc;		argv = margv;	}	if (argc < 2) {usage:		printf("%s local-file\n", argv[0]);		return;	}	if ( access(argv[1], R_OK | F_OK ) == -1 ) {		perror("file error: ");		return;	}	type= get_type(argv[1]);	printf("file %s is assumed to be %s\n", argv[1], typetostring(type));}

⌨️ 快捷键说明

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