From owner-freebsd-chat Tue Jan 18 7:52: 9 2000 Delivered-To: freebsd-chat@freebsd.org Received: from ren.detir.qld.gov.au (ns.detir.qld.gov.au [203.46.81.66]) by hub.freebsd.org (Postfix) with ESMTP id 42AD714CC5 for ; Tue, 18 Jan 2000 07:52:04 -0800 (PST) (envelope-from syssgm@detir.qld.gov.au) Received: by ren.detir.qld.gov.au; id BAA13859; Wed, 19 Jan 2000 01:50:32 +1000 (EST) Received: from ogre.detir.qld.gov.au(167.123.8.3) via SMTP by ren.detir.qld.gov.au, id smtpd013857; Wed Jan 19 01:50:28 2000 Received: from atlas.detir.qld.gov.au (atlas.detir.qld.gov.au [167.123.8.9]) by ogre.detir.qld.gov.au (8.8.8/8.8.7) with ESMTP id BAA24944; Wed, 19 Jan 2000 01:50:23 +1000 (EST) Received: from nymph.detir.qld.gov.au (nymph.detir.qld.gov.au [167.123.10.10]) by atlas.detir.qld.gov.au (8.8.5/8.8.5) with ESMTP id BAA14678; Wed, 19 Jan 2000 01:50:23 +1000 (EST) Received: from nymph.detir.qld.gov.au (localhost [127.0.0.1]) by nymph.detir.qld.gov.au (8.9.3/8.8.7) with ESMTP id BAA44174; Wed, 19 Jan 2000 01:50:22 +1000 (EST) (envelope-from syssgm@nymph.detir.qld.gov.au) Message-Id: <200001181550.BAA44174@nymph.detir.qld.gov.au> To: Jonathon McKitrick Cc: freebsd-chat@freebsd.org, syssgm@detir.qld.gov.au Subject: Re: For any sick-in-the-head C programmers References: In-Reply-To: from Jonathon McKitrick at "Tue, 18 Jan 2000 15:34:48 +0000" Date: Wed, 19 Jan 2000 01:50:22 +1000 From: Stephen McKay Sender: owner-freebsd-chat@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org 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