On 02/02/2016 06:15 PM, Programmingkid wrote: >> No, keep filename as a const char * pointer. It's easy to avoid use of >> uninitialized memory. Try this: >> >> const char *filename; >> char bsd_path[MAXPATHLEN] = ""; >> ... >> if (strncmp("/dev/cdrom"...) { >> bsd_path = ... >> } >> ... >> if (strncmp("/dev/"...) { >> print_unmounting_directions(*bsd_path ? bsd_path : filename); > > At first I thought this code looked unusual, but it does work. Is this ok? > > #if defined(__APPLE__) && defined(__MACH__) > /* if a physical device experienced an error while being opened */ > if (strncmp((*bsd_path ? bsd_path : filename), "/dev/", 5) == 0) { > print_unmounting_directions(*bsd_path ? bsd_path : filename); > return -1; > }
A bit repetitive. You don't use filename after the fact, so shorter would be: #if defined(__APPLE__)... if (*bsd_path) { filename = filename; if (strncmp(filename, "/dev/"...) { print...(filename); -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature