commit 8efa043
Emilia Smólska
·
2026-06-22 00:13:52 +0000 UTC
parent 7c411a5
Make -qC do something
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 *