Commit Diff


commit - 890a4ba04fadc9e446dfa580f159612bfeb82c04
commit + 4e7ba404b7b61cc31fb04eb681ebea50aa98e476
blob - 9e1741ca45df95f7619fb690e6da0a45a301dd55
blob + 9a783ba124348df0f227d0ed359cf9a164b06822
--- ftp.c
+++ ftp.c
@@ -55,6 +55,7 @@ int			 sock;
 struct evbuffer		*buf;
 struct evbuffer		*dirbuf;
 uint32_t		 msize;
+int			 bell;
 
 #define PWDFID		0
 
@@ -413,6 +414,37 @@ do_connect(const char *connspec, const char *path)
 }
 
 static void
+cmd_bell(int argc, const char **argv)
+{
+	if (argc == 0) {
+		bell = !bell;
+		if (bell)
+			puts("bell mode enabled");
+		else
+			puts("bell mode disabled");
+		return;
+	}
+
+	if (argc != 1)
+		goto usage;
+
+	if (!strcmp(*argv, "on")) {
+		bell = 1;
+		puts("bell mode enabled");
+		return;
+	}
+
+	if (!strcmp(*argv, "off")) {
+		bell = 0;
+		puts("bell mode disabled");
+		return;
+	}
+
+usage:
+	printf("bell [on | off]\n");
+}
+
+static void
 cmd_ls(int argc, const char **argv)
 {
 	uint64_t off = 0;
@@ -476,6 +508,37 @@ cmd_ls(int argc, const char **argv)
 	}
 
 	do_clunk(1);
+}
+
+static void
+cmd_verbose(int argc, const char **argv)
+{
+	if (argc == 0) {
+		log_setverbose(!log_getverbose());
+		if (log_getverbose())
+			puts("verbose mode enabled");
+		else
+			puts("verbose mode disabled");
+		return;
+	}
+
+	if (argc != 1)
+		goto usage;
+
+	if (!strcmp(*argv, "on")) {
+		log_setverbose(1);
+		puts("verbose mode enabled");
+		return;
+	}
+
+	if (!strcmp(*argv, "off")) {
+		log_setverbose(0);
+		puts("verbose mode disabled");
+		return;
+	}
+
+usage:
+	printf("verbose [on | off]\n");
 }
 
 static void
@@ -485,7 +548,9 @@ excmd(int argc, const char **argv)
 		const char	*name;
 		void		(*fn)(int, const char **);
 	} cmds[] = {
+		{"bell",	cmd_bell},
 		{"ls",		cmd_ls},
+		{"verbose",	cmd_verbose},
 	};
 	size_t i;
 
@@ -507,7 +572,7 @@ main(int argc, char **argv)
 	int	ch;
 
 	log_init(1, LOG_DAEMON);
-	log_setverbose(1);
+	log_setverbose(0);
 	log_procinit(getprogname());
 
 	while ((ch = getopt(argc, argv, "C:cK:")) != -1) {
@@ -556,8 +621,13 @@ main(int argc, char **argv)
 			if (**ap != '\0')
 				ap++, argc++;
 		}
-		excmd(argc, argv);
+		excmd(argc, (const char **)argv);
 
+		if (bell) {
+			printf("\a");
+			fflush(stdout);
+		}
+
 		free(line);
 	}