On Tue, Aug 25, 2015 at 01:09:27PM +0100, Rainer Weikusat wrote: > "tilt!" <t...@linuxfoo.de> writes: > > > Hi Edward, > > > > On 08/25/2015 12:51 PM, Edward Bartolo wrote: > >> [...] > > > > Please accept merge request #1 "cleanup of backend binaries". > > Two random remarks: > > ,---- > | size_t essid_safe_strlen(uint8_t * bytes) > | { > | size_t result; > | > | if(!bytes) > | return 0; > | > | result = 0; > | > | while(*bytes != 0) { > | bytes++; > | result++; > | } > | > | return result; > | } > `---- > > A C string of length 0 is just a "\000". A NULL pointer is not a string. > Reimplementing strlen is - apart from that - a rather bizarre idea. A > usual implementation would look somewhat like this: > > size_t strlen(char *s) > { > char *r; > > r = s; > while (*r) ++r; > return r - s; > } > > ie, it's not necessary to maintain a separate byte counter. > > ,---- > | uint8_t essid_allowed_chars[] = > "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"; > | > | [...] > | > | int essid_allowed_char(uint8_t c) { > | size_t i; > | size_t k; > | > | int rv; > | > | rv = 0; > | > | k = essid_safe_strlen(essid_allowed_chars); > | > | for (i=0; i<k; i++) > | if(c==essid_allowed_chars[i]) { > | rv = 1; > | > | break; > | } > | > | return rv; > | } > `---- > > A more sensible simple way to implement this would be > > char *essid_allowed_chars = > "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"; > > int essid_allowed_char(int c) > { > return strchr(essid_allowed_chars, c) != NULL; > } > > Considering that this enforces some kind of 'bastard URL-encoding' > (using + as prefix instead of %) for all other bytes, it's also going > make people who believe that UTF-8 would be a well supported way to > represent non-ASCII characters very unhappy.
The Korean encoding before UTF-8 used two-byte characters. Sone of those characters contained zero bytes as parts of a two-byte nonzero encoding. I had to use environment-dependent string copying to get that one right. -- hendrik > _______________________________________________ > Dng mailing list > Dng@lists.dyne.org > https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng