code: plan9front

Download patch

ref: a5517fca5fff3b6038b5e5a1f3dbc828d798fe92
parent: 21e5726f43707a5736be0f0e38f41c058620401b
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Jan 26 13:07:04 EST 2021

news: make -a and -n get along (thanks lyndon)

currently, -a and -n are mutually exclusive.
this change allows them to be used together.

--- a/sys/src/cmd/news.c
+++ b/sys/src/cmd/news.c
@@ -44,22 +44,25 @@
 void
 main(int argc, char *argv[])
 {
-	int i;
+	int i, aflag = 0, nflag = 0;
+	int doupdate = 1;
+	int printall = 0;
+	void (*printer)(char*) = print_item;
 
 	Binit(&bout, 1, OWRITE);
 	if(argc == 1) {
-		eachitem(print_item, 0, 1);
+		eachitem(print_item, printall, doupdate);
 		exits(0);
 	}
 	ARGBEGIN{
 	case 'a':	/* print all */
-		eachitem(print_item, 1, 0);
+		doupdate = 0;
+		printall = 1;
 		break;
 
 	case 'n':	/* names only */
-		eachitem(note, 0, 0);
-		if(n_items)
-			Bputc(&bout, '\n');
+		doupdate = 0;
+		printer = note;
 		break;
 
 	default:
@@ -66,8 +69,14 @@
 		fprint(2, "news: bad option %c\n", ARGC());
 		exits("usage");
 	}ARGEND
-	for(i=0; i<argc; i++)
-		print_item(argv[i]);
+	
+	if (argc == 0)
+		eachitem(printer, printall, doupdate);
+	else
+		for(i=0; i<argc; i++)
+			print_item(argv[i]);
+	if (n_items)
+		Bputc(&bout, '\n');
 	exits(0);
 }
 
@@ -227,3 +236,4 @@
 	Bprint(&bout, " %s", file);
 	n_items++;
 }
+