summaryrefslogtreecommitdiff
path: root/sys/src/cmd/upas/send/rewrite.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2017-03-12 17:15:03 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2017-03-12 17:15:03 +0100
commit963cfc9a6f6e721f52aa949e6d1af0c3e8dc2ecc (patch)
tree749b74875dbc49bcf6ed0776648b8f0ef9417407 /sys/src/cmd/upas/send/rewrite.c
parent8177d20fb2709ba9290dfd41308b8e5bee4e00f8 (diff)
merging erik quanstros nupas
Diffstat (limited to 'sys/src/cmd/upas/send/rewrite.c')
-rw-r--r--sys/src/cmd/upas/send/rewrite.c89
1 files changed, 42 insertions, 47 deletions
diff --git a/sys/src/cmd/upas/send/rewrite.c b/sys/src/cmd/upas/send/rewrite.c
index 8feebc9ad..3dde19080 100644
--- a/sys/src/cmd/upas/send/rewrite.c
+++ b/sys/src/cmd/upas/send/rewrite.c
@@ -1,5 +1,6 @@
#include "common.h"
#include "send.h"
+#include <regexp.h>
extern int debug;
@@ -32,7 +33,7 @@ static rule *findrule(String *, int);
* Get the next token from `line'. The symbol `\l' is replaced by
* the name of the local system.
*/
-extern String *
+String*
rule_parse(String *line, char *system, int *backl)
{
String *token;
@@ -80,10 +81,8 @@ getrule(String *line, String *type, char *system)
if(re == 0)
return 0;
rp = (rule *)malloc(sizeof(rule));
- if(rp == 0) {
- perror("getrules:");
- exit(1);
- }
+ if(rp == 0)
+ sysfatal("malloc: %r");
rp->next = 0;
s_tolower(re);
rp->matchre = s_new();
@@ -123,16 +122,15 @@ getrule(String *line, String *type, char *system)
* rules are of the form:
* <reg exp> <String> <repl exp> [<repl exp>]
*/
-extern int
+int
getrules(void)
{
- Biobuf *rfp;
- String *line;
- String *type;
- String *file;
+ char file[Pathlen];
+ Biobuf *rfp;
+ String *line, *type;
- file = abspath("rewrite", UPASLIB, (String *)0);
- rfp = sysopen(s_to_c(file), "r", 0);
+ snprint(file, sizeof file, "%s/rewrite", UPASLIB);
+ rfp = sysopen(file, "r", 0);
if(rfp == 0) {
rulep = 0;
return -1;
@@ -145,7 +143,6 @@ getrules(void)
getrule(s_restart(line), type, altthissys);
s_free(type);
s_free(line);
- s_free(file);
sysclose(rfp);
return 0;
}
@@ -168,8 +165,7 @@ findrule(String *addrp, int authorized)
continue;
memset(rp->subexp, 0, sizeof(rp->subexp));
if(debug)
- fprint(2, "matching %s against %s\n", s_to_c(addrp),
- rp->matchre->base);
+ fprint(2, "matching %s aginst %s\n", s_to_c(addrp), rp->matchre->base);
if(regexec(rp->program, s_to_c(addrp), rp->subexp, NSUBEXP))
if(s_to_c(addrp) == rp->subexp[0].sp)
if((s_to_c(addrp) + strlen(s_to_c(addrp))) == rp->subexp[0].ep)
@@ -183,7 +179,7 @@ findrule(String *addrp, int authorized)
* 0 ifaddress matched and ok to forward
* 1 ifaddress matched and not ok to forward
*/
-extern int
+int
rewrite(dest *dp, message *mp)
{
rule *rp; /* rewriting rule */
@@ -279,40 +275,39 @@ substitute(String *source, Resub *subexp, message *mp)
return s_restart(stp);
}
-extern void
+void
regerror(char* s)
{
fprint(2, "rewrite: %s\n", s);
/* make sure the message is seen locally */
- syslog(0, "mail", "regexp error in rewrite: %s", s);
-}
-
-extern void
-dumprules(void)
-{
- rule *rp;
-
- for (rp = rulep; rp != 0; rp = rp->next) {
- fprint(2, "'%s'", rp->matchre->base);
- switch (rp->type) {
- case d_pipe:
- fprint(2, " |");
- break;
- case d_cat:
- fprint(2, " >>");
- break;
- case d_alias:
- fprint(2, " alias");
- break;
- case d_translate:
- fprint(2, " translate");
- break;
- default:
- fprint(2, " UNKNOWN");
- break;
- }
- fprint(2, " '%s'", rp->repl1 ? rp->repl1->base:"...");
- fprint(2, " '%s'\n", rp->repl2 ? rp->repl2->base:"...");
- }
+ syslog(0, "mail", "error in rewrite: %s", s);
}
+//void
+//dumprules(void)
+//{
+// rule *rp;
+//
+// for (rp = rulep; rp != 0; rp = rp->next) {
+// fprint(2, "'%s'", rp->matchre->base);
+// switch (rp->type) {
+// case d_pipe:
+// fprint(2, " |");
+// break;
+// case d_cat:
+// fprint(2, " >>");
+// break;
+// case d_alias:
+// fprint(2, " alias");
+// break;
+// case d_translate:
+// fprint(2, " translate");
+// break;
+// default:
+// fprint(2, " UNKNOWN");
+// break;
+// }
+// fprint(2, " '%s'", rp->repl1 ? rp->repl1->base:"...");
+// fprint(2, " '%s'\n", rp->repl2 ? rp->repl2->base:"...");
+// }
+//}