lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <45D10460.6000903@iinet.net.au>
Date:	Tue, 13 Feb 2007 11:20:48 +1100
From:	Ben Nizette <ben.nizette@...et.net.au>
To:	Joe Perches <joe@...ches.com>
CC:	linux-kernel@...r.kernel.org
Subject: Re: Coding style RFC: convert "for (i=0;i<ARRAY_SIZE(array);i++)"
 to	"array_for_each(index, array)"

Joe Perches wrote:
> Now that most of the sizeof(array)/sizeof(array[0])
> conversions have been done (there are about 800 done
> and about another 130 left), perhaps it could be
> useful to change the code to use a define similar
> to the list_for_each
> 
> #define list_for_each(pos, head) \
> 	for (pos = (head)->next; prefetch(pos->next), pos != (head); \
>         	pos = pos->next)
> 
> perhaps
> 
> #define array_for_each(index, array) \
> 	for ((index) = 0; (index) < ARRAY_SIZE((array)); (index)++)
> 

I like the idea, my only concern would be potential confusion.  That is, 
the list_for_each macro sets pos to each list_head in turn where 
array_for_each just sets the index /in to/ the array.  While I think the 
way you have is nicer, for compatibility between the two styles maybe 
something more like

  #define array_for_each(element, array) \
	for (int __idx = 0; __idx < ARRAY_SIZE((array)); \
		__idx++, (element) = &(array[__idx]))

would help.  Of course the other option is to name array_for_each 
something different to avoid comparisons with list_for_each.

--Ben.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ