> On January 22, 2016 at 4:34 PM Rainer Weikusat > <rainerweiku...@virginmedia.com> wrote: > > Can the effect of the following C function > > static void print_start(char const *name, char const *what) > { > char *buf, *p; > unsigned name_len, what_len, total; > > name_len = strlen(name); > what_len = strlen(what); > total = name_len + what_len + 3; > > p = buf = alloca(total); > memcpy(p, name, name_len); > p += name_len; > *p++ = ' '; > memcpy(p, what, what_len); > p += what_len; > *p++ = ':'; > *p = ' '; > > *buf &= ~0x20; > > Write(2, buf, total); > } > > be considered obvious or should it rather get an explanation? > > An ASCII lowercase letter can be turned into the corresponding uppercase > letter by clearing the sixth bit.
I'm unhappy for two reasons: the failure mode of alloca is SIGSEGV or some other malfunction and there is no way to test for it the *buf &= ~0x20; breaks for UTF8 strings. Nevermind that the function implicitly references stderr except when it doesn't. Peter Olson _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng