emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: emacs coding modes need 'Suspend Disbelief' button


From: Stefan Monnier
Subject: Re: emacs coding modes need 'Suspend Disbelief' button
Date: Fri, 23 Jun 2017 17:11:01 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux)

> ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='u'))?U::RTNL::RT::Type_t::RT_UNICAST:(
>        ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='l'))?U::RTNL::RT::Type_t::RT_LOCAL:(
>        ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='b'))?U::RTNL::RT::Type_t::RT_BROADCAST:(
>        ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='a'))?U::RTNL::RT::Type_t::RT_ANYCAST:(
>                                      ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='a'))?U::RTNL::RT::Type_t::RT_ANYCAST:(

> An attempt to add another clause with Emacs c++-mode enabled
> fairly reliably results in a core dump.

Sorry, no core dump here.  But that code sure looks hideous.
Is that machine-generated code, maybe?

I'd be strongly tempted to rewrite along the lines of

   if ((argc <= 2) || (argv[3] == NULL))
      <blabla>
   else
     switch (argv[3][0]) {
     case 'u': return U::RTNL::RT::Type_t::RT_UNICAST;
     case 'l': return U::RTNL::RT::Type_t::RT_LOCAL;
     ...
     }


-- Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]