Daniel Eisele([email protected]) on 2020.07.15 09:32:37 +0200: > Hi, > > I'm currently porting acme-client to FreeBSD and while doing that I've > noticed a few small issues. > > src/usr.sbin/acme-client/parse.y: > * The grammar allows the user to omit the newline after the first line > in a domain or authority block.
Yes. I'm still pnodering this. What are the chances that someone does that? Probably no one does, but it worthwhile to break someones config for such a change? > * The grammar uses right recursion for lists, left recursion is > probably the better option here > (https://docs.oracle.com/cd/E19504-01/802-5880/yacc-13/index.html) > > src/usr.sbin/acme-client/dbg.c doesn't build because in the included > header file extern.h the type pid_t is missing (unistd.h). extern.h should #include <sys/types.h> for that, no? > src/usr.sbin/acme-client/dnsproc.c also fails to build because > struct sockaddr_in and struct sockaddr_in6 are missing (netinet/in.h). correct. > The missing header files only cause a build failure on FreeBSD, but I > think it would still be a good idea to fix them in OpenBSD... > > Regards, > Daniel Eisele > > --- parse.y.orig 2020-07-10 12:36:30 UTC > +++ parse.y > @@ -170,11 +170,11 @@ varset : STRING '=' string { > } > ; > > -optnl : '\n' optnl > +optnl : nl > | > ; > > -nl : '\n' optnl /* one newline or more */ > +nl : optnl '\n' /* one newline or more */ > ; > > comma : ',' > @@ -190,7 +190,7 @@ authority : AUTHORITY STRING { > yyerror("authority already defined"); > YYERROR; > } > - } '{' optnl authorityopts_l '}' { > + } '{' optnl authorityopts_l optnl '}' { > if (auth->api == NULL) { > yyerror("authority %s: no api URL specified", > auth->name); > @@ -205,8 +205,8 @@ authority : AUTHORITY STRING { > } > ; > > -authorityopts_l : authorityopts_l authorityoptsl nl > - | authorityoptsl optnl > +authorityopts_l : authorityopts_l nl authorityoptsl > + | authorityoptsl > ; > > authorityoptsl : API URL STRING { > @@ -246,7 +246,7 @@ domain : DOMAIN STRING { > yyerror("domain already defined"); > YYERROR; > } > - } '{' optnl domainopts_l '}' { > + } '{' optnl domainopts_l optnl '}' { > if (domain->domain == NULL) { > if ((domain->domain = strdup(domain->handle)) > == NULL) > @@ -273,8 +273,8 @@ keytype : RSA { $$ = KT_RSA; } > | { $$ = KT_RSA; } > ; > > -domainopts_l : domainopts_l domainoptsl nl > - | domainoptsl optnl > +domainopts_l : domainopts_l nl domainoptsl > + | domainoptsl > ; > > domainoptsl : ALTERNATIVE NAMES '{' altname_l '}' > @@ -385,7 +385,7 @@ domainoptsl : ALTERNATIVE NAMES '{' altname_l '}' > } > ; > > -altname_l : altname comma altname_l > +altname_l : altname_l comma altname > | altname > ; >
