dc: make 4 % 0 emit error messgaes and set result to 0

function                                             old     new   delta
mod                                                  105     136     +31

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/miscutils/dc.c b/miscutils/dc.c
index 5119c13..5aef64b 100644
--- a/miscutils/dc.c
+++ b/miscutils/dc.c
@@ -94,13 +94,18 @@
 {
 	data_t d = pop();
 
-	//if (d == 0) {
-	//	bb_error_msg("remainder by zero");
-	//	pop();
-	//	push(0);
-	//	return;
-	//}
-	//^^^^ without this, we simply get SIGFPE and die
+	/* compat with dc (GNU bc 1.07.1) 1.4.1:
+	 * $ dc -e '4 0 % p'
+	 * dc: remainder by zero
+	 * 0
+	 */
+	if (d == 0) {
+		bb_error_msg("remainder by zero");
+		pop();
+		push(0);
+		return;
+	}
+	/* ^^^^ without this, we simply get SIGFPE and die */
 
 	push((data_t) pop() % d);
 }