Wednesday, June 30, 2021

Re: C style in OpenBSD

Saying a code is horrible, is often subjective. If you work on your own project, choose the style that fits your mind. If you are patching a program, try to be consistent with the existing code.

You can also have a look at the "style" manpage but keep in mind that it is for the kernel.

Ronan

> Le 29 juin 2021 à 15:00, Reuben ua Bríฤก <u5644051@anu.edu.au> a écrit :
>
> gday folks.
>
> first i will say i am do not consider myself well versed in machine
> languages. i have use plain tex for a while, and i use the odd bit of
> sh, sed, etc. i recently read K&R because sh disgusts me. i have seen
> a bit of some programming languages, but nothing very recent, and i
> cant say C or most any other language i have seen seem very sensible.
> i am have an account on a timesharing system in the CS school, but
> otherwise have nothing to do with them or any computer scholars.
>
> i have seen much comment from openbsd developers about bad C style.
> i would be thankful to see examples of `good' style, in case i wish to
> write some C for OpenBSD. (right now i am interested in fixing some
> bugs in vi.)
>
> also are there places for discussing such things, suitable for a newbie?
>
> cheers,
> reuben.
>
> p.s. one particular question i have is on the mandoc/main.c:
>
> i found the following:
>
> if (strcmp(progname, BINM_MAN) == 0)
> search.argmode = ARG_NAME;
> else if (strcmp(progname, BINM_APROPOS) == 0)
> search.argmode = ARG_EXPR;
> else if (strcmp(progname, BINM_WHATIS) == 0)
> search.argmode = ARG_WORD;
> else if (strncmp(progname, "help", 4) == 0)
> search.argmode = ARG_NAME;
> else
> search.argmode = ARG_FILE;
>
> much more readable as:
>
> search.argmode =
> strcmp(progname, BINM_MAN) == 0 ? ARG_NAME :
> strcmp(progname, BINM_APROPOS) == 0 ? ARG_EXPR :
> strcmp(progname, BINM_WHATIS) == 0 ? ARG_WORD :
> strncmp(progname, "help", 4) == 0 ? ARG_NAME :
> ARG_FILE;
>
> a style i came up with in imitation of some disgusting haskell code.
> any comments?
>
> ---
> ANSI 'K'&'R' is really just 'B' in disguise.
>

No comments:

Post a Comment