git: 9front

Download patch

ref: 59e24f9788b8f6a51dfe7cb95b0c44aad637b313
parent: df5e6592517971f3028e99ad62e250573b621822
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Sat Nov 19 14:14:46 EST 2011

mothra: query screendump arguments

--- a/sys/src/cmd/mothra/mothra.c
+++ b/sys/src/cmd/mothra/mothra.c
@@ -572,7 +572,7 @@
 void screendump(char *name, int full){
 	Image *b;
 	int fd;
-	fd=create(name, OWRITE|OTRUNC, 0666);
+	fd=create(name, OWRITE, 0666);
 	if(fd==-1){
 		message("can't create %s", name);
 		return;
@@ -614,6 +614,9 @@
  * user typed a command.
  */
 void docmd(Panel *p, char *s){
+	char buf[NNAME];
+	int c;
+
 	USED(p);
 	while(*s==' ' || *s=='\t') s++;
 	/*
@@ -621,7 +624,7 @@
 	 */
 	if(s[0]!='\0' && s[1]!='\0' && s[1]!=' ')
 		geturl(s, GET, 0, 0, 0);
-	else switch(s[0]){
+	else switch(c = s[0]){
 	default:
 		message("Unknown command %s, type h for help", s);
 		break;
@@ -648,22 +651,17 @@
 		else
 			message("Usage: j index");
 		break;
+	case 'w':
 	case 'W':
 		s = arg(s);
-		if(s=='\0'){
-			message("Usage: W file");
-			break;
+		if(s==0 || *s=='\0'){
+			snprint(buf, sizeof(buf), "dump.bit");
+			if(eenter("Screendump to", buf, sizeof(buf), &mouse) <= 0)
+				break;
+			s = buf;
 		}
-		screendump(s, 1);
+		screendump(s, c == 'W');
 		break;
-	case 'w':
-		s = arg(s);
-		if(s=='\0'){
-			message("Usage: w file");
-			break;
-		}
-		screendump(s, 0);
-		break;
 	case 's':
 		s = arg(s);
 		if(!selection){
@@ -671,8 +669,6 @@
 			break;
 		}
 		if(s==0 || *s=='\0'){
-			static char buf[NNAME];
-
 			snprint(buf, sizeof(buf), "%s", urltofile(selection));
 			if(eenter("Save to", buf, sizeof(buf), &mouse) <= 0)
 				break;
--