From 4163c691dfb2e1b681a2036c49c0663cae1d7f59 Mon Sep 17 00:00:00 2001 From: tgoodwin Date: Wed, 8 Jul 1998 17:00:32 +0000 Subject: completely revamp to use my `+' example --- addon.c | 26 ++++++++++---------------- addon.h | 46 ++++++++++++++++++---------------------------- 2 files changed, 28 insertions(+), 44 deletions(-) diff --git a/addon.c b/addon.c index df3fcd7..b6ddc61 100644 --- a/addon.c +++ b/addon.c @@ -1,22 +1,16 @@ /* - This file contains the implementations of any locally defined - builtins. + This file is NOT BUILT by default. Together with addon.h, it + provides an example of how to add new builtins to rc. */ -#ifdef DWS - -/* - This is what DaviD Sanderson (dws@cs.wisc.edu) uses. -*/ - -#include -#include -#include - -#include "rc.h" /* for bool TRUE, FALSE */ +#include "rc.h" #include "addon.h" -#include "addon/access.c" -#include "addon/test.c" +void b_add(char **av) { + long sum = 0; -#endif + while (*++av) + sum += atol(*av); + fprint(1, "%ld\n", sum); + set(TRUE); +} diff --git a/addon.h b/addon.h index 25f2312..b4a207b 100644 --- a/addon.h +++ b/addon.h @@ -1,38 +1,28 @@ /* - This file is the interface to the rest of rc for any locally - defined addon builtins. By default there are none. - The interface consists of the following macro. - - ADDONS A comma-separated list of pairs of function pointers - and string literals. - - The addon functions must also have proper prototypes in this file. - The builtins all have the form: - + This file is NOT BUILT by default. Together with addon.c, it + provides an example of how to add new builtins to rc. + + To define a new builtin, it must appear in the macro ADDONS, which + is a comma-separated list of pairs of function pointers (the + implementation of the new builtin) and string literals (the name of + the new builtin). + + Any new builtin functions must also have proper prototypes in this + file. This is always of the same form. + void b_NAME(char **av); - + + The first argument, av[0], is the name of the builtin. The last + argument is followed by a NULL pointer. + Builtins report their exit status using set(TRUE) or set(FALSE). - Example: - - #define ADDONS { b_test, "test" }, - extern void b_test(char **av); */ -#define ADDONS /* no addons by default */ - -#ifdef DWS - -/* - This is what DaviD Sanderson (dws@cs.wisc.edu) uses. -*/ +#if RC_ADDON -#undef ADDONS -#define ADDONS { b_access, "access" },\ - { b_test, "test" },\ - { b_test, "[" }, +#define ADDONS { b_add, "+" }, -extern void b_access(char **av); -extern void b_test(char **av); +extern void b_add(char **av); #endif -- cgit v1.2.3