summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortgoodwin <tgoodwin>1998-07-13 10:22:15 +0000
committerToby Goodwin <toby@paccrat.org>2015-05-16 21:23:08 +0100
commitf4f97b1bd0ba9d780e6565b05675a4a8debe2515 (patch)
treeb36adffb6242a93b3340751af2af412e37f28d91
parent75b4f0440f1e83b020e17b0d09dafe37dbf7e4ee (diff)
add `x'
-rw-r--r--addon.c11
-rw-r--r--addon.h9
2 files changed, 16 insertions, 4 deletions
diff --git a/addon.c b/addon.c
index b6ddc61..6e6c232 100644
--- a/addon.c
+++ b/addon.c
@@ -6,7 +6,7 @@
#include "rc.h"
#include "addon.h"
-void b_add(char **av) {
+void b_sum(char **av) {
long sum = 0;
while (*++av)
@@ -14,3 +14,12 @@ void b_add(char **av) {
fprint(1, "%ld\n", sum);
set(TRUE);
}
+
+void b_prod(char **av) {
+ long sum = 1;
+
+ while (*++av)
+ sum *= atol(*av);
+ fprint(1, "%ld\n", sum);
+ set(TRUE);
+}
diff --git a/addon.h b/addon.h
index b4a207b..4a69375 100644
--- a/addon.h
+++ b/addon.h
@@ -16,13 +16,16 @@
argument is followed by a NULL pointer.
Builtins report their exit status using set(TRUE) or set(FALSE).
-
+
*/
#if RC_ADDON
-#define ADDONS { b_add, "+" },
+#define ADDONS \
+ { b_sum, "+" }, \
+ { b_prod, "x" },
-extern void b_add(char **av);
+extern void b_sum(char **av);
+extern void b_prod(char **av);
#endif