commit 8efa043

Emilia Smólska  ·  2026-06-22 00:13:52 +0000 UTC
parent 7c411a5
Make -qC do something
2 files changed,  +20, -9
M dice.6
M dice.c
M dice.6
+13, -5
 1@@ -25,20 +25,28 @@ Flip a coin, displaying
 2 .Dq heads
 3 or
 4 .Dq tails .
 5+If
 6+.Fl q
 7+is specified, display
 8+.Dq 0
 9+or
10+.Dq 1
11+instead.
12 .It Fl S
13 Parse a line read from standard input instead of
14 .Ar expr .
15 .It Fl q
16-Don't display
17-.Ar expr
18-followed by an equals sign before the result.
19+Be quieter.
20 .El
21 .Pp
22 If
23 .Fl c
24 is not specified, an expression in the form
25-.Em x Ns d Ns Em y
26-is parsed and randomly evaluated.
27+.Em x Ns d Ns Em y Ns [ Ns + Ns Em x Ns d Ns Em y Ns ] Ns ... 
28+is parsed and randomly evaluated. Unless
29+.Fl q
30+is specified, the expression is printed before the result, followed by an
31+equals sign.
32 .Sh EXIT STATUS
33 .Ex -std
34 .Sh SEE ALSO
M dice.c
+7, -4
 1@@ -29,7 +29,7 @@ STATIC VOID	fixargv0(CONST STRING);
 2 STATIC CONST DICE	*parsedice(CONST STRING);
 3 STATIC CONST STRING	getlin();
 4 STATIC INT	rolldice(CONST DICE *);
 5-STATIC VOID	coinflip();
 6+STATIC VOID	coinflip(BOOL);
 7 STATIC VOID	*xmalloc(SIZE);
 8 
 9 INT
10@@ -44,7 +44,7 @@ main(INT argc, CHAR **argv)
11 		OUT:	usage();
12 		ENDSW;
13 	OD; argc-=optind; argv+=optind;
14-	IF Cflag THEN coinflip(); RETURN 0 FI;
15+	IF Cflag THEN coinflip(qflag); RETURN 0 FI;
16 	CONST STRING e;
17 	IF Sflag THEN e=getlin() ELIF argc<1 THEN usage() ELSE e=argv[0] FI;
18 	AUTO d=parsedice(e);
19@@ -124,9 +124,12 @@ rolldice(CONST DICE *dice)
20 }
21 
22 STATIC VOID
23-coinflip()
24+coinflip(BOOL quiet)
25 {
26-	IF random()&1 THEN printf("heads\n") ELSE printf("tails\n") FI;
27+	IF random()&1
28+	THEN	printf("%s\n",quiet?"0":"heads")
29+	ELSE	printf("%s\n",quiet?"1":"tails")
30+	FI;
31 }
32 
33 STATIC VOID *