int yyprev;
int yylast;
+Strlit *reorgpath(Strlit*);
+
static void lexinit(void);
static void lexinit1(void);
static void lexfini(void);
int *val;
} exper[] = {
{"rune32", &rune32},
+ {"reorg", &reorg},
};
static void
yyerror("import path contains NUL");
errorexit();
}
+
+ if(reorg)
+ f->u.sval = reorgpath(f->u.sval);
// The package name main is no longer reserved,
// but we reserve the import path "main" to identify
outfile = smprint("%s.%c", namebuf, thechar);
}
}
+
+static struct {
+ char *old;
+ char *xnew;
+} reorgtab[] = {
+ {"asn1", "encoding/asn1"},
+ {"big", "math/big"},
+ {"cmath", "math/cmplx"},
+ {"csv", "encoding/csv"},
+ {"exec", "os/exec"},
+ {"exp/template/html", "html/template"},
+ {"gob", "encoding/gob"},
+ {"http", "net/http"},
+ {"http/cgi", "net/http/cgi"},
+ {"http/fcgi", "net/http/fcgi"},
+ {"http/httptest", "net/http/httptest"},
+ {"http/pprof", "net/http/pprof"},
+ {"json", "encoding/json"},
+ {"mail", "net/mail"},
+ {"rpc", "net/rpc"},
+ {"rpc/jsonrpc", "net/rpc/jsonrpc"},
+ {"scanner", "text/scanner"},
+ {"smtp", "net/smtp"},
+ {"syslog", "log/syslog"},
+ {"tabwriter", "text/tabwriter"},
+ {"template", "text/template"},
+ {"template/parse", "text/template/parse"},
+ {"rand", "math/rand"},
+ {"url", "net/url"},
+ {"utf16", "unicode/utf16"},
+ {"utf8", "unicode/utf8"},
+ {"xml", "encoding/xml"},
+};
+
+Strlit*
+reorgpath(Strlit *s)
+{
+ int i;
+
+ for(i=0; i < nelem(reorgtab); i++)
+ if(strcmp(s->s, reorgtab[i].old) == 0)
+ return strlit(reorgtab[i].xnew);
+ return s;
+}