Date: Wed, 19 Jan 2000 01:50:22 +1000 From: Stephen McKay <syssgm@detir.qld.gov.au> To: Jonathon McKitrick <jcm@dogma.freebsd-uk.eu.org> Cc: freebsd-chat@freebsd.org, syssgm@detir.qld.gov.au Subject: Re: For any sick-in-the-head C programmers Message-ID: <200001181550.BAA44174@nymph.detir.qld.gov.au> In-Reply-To: <Pine.BSF.4.21.0001181534340.33173-100000@dogma.freebsd-uk.eu.org> from Jonathon McKitrick at "Tue, 18 Jan 2000 15:34:48 %2B0000" References: <Pine.BSF.4.21.0001181534340.33173-100000@dogma.freebsd-uk.eu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday, 18th January 2000, Jonathon McKitrick wrote:
>Is there a way to format that macro so it is more readable?
I've not tried compiling it, but this should be equivalent. By the way,
clear layout shows that the & vs == trick saved 2 characters in total. :-)
/*************** Micro getopt() *********************************************/
#define OPTION(c,v) \
( \
_O&2 && **v \
? *(*v)++ \
: !c || _O&4 \
? 0 \
: ( \
!(_O&1) && (--c, ++v), \
_O=4, \
c && **v == '-' && v[0][1] \
? *++*v == '-' && !v[0][1] \
? (--c, ++v , 0) \
: (_O=2, *(*v)++) \
: 0 \
) \
)
#define OPTARG(c,v) \
( \
_O&2 \
? **v || (++v, --c) \
? (_O=1, --c, *v++) \
: (_O=4, (char*)0) \
: (char*)0 \
)
#define OPTONLYARG(c,v) \
( \
_O&2 && **v \
? (_O=1, --c, *v++) \
: (char*)0 \
)
#define ARG(c,v) \
( \
c \
? (--c, *v++) \
: (char*)0 \
)
static int _O = 0; /* Internal state */
/*************** Micro getopt() *********************************************/
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001181550.BAA44174>
