Re: Fwd: Re: List of parallel ports
Brought to you by:
twaugh
From: Jacques P. <jpe...@ie...> - 2011-07-21 12:37:30
|
Le jeudi 21 juillet 2011 05:41:20, vous avez écrit : > On Thu, 2011-07-14 at 23:48 -0400, Jacques Pelletier wrote: > > I've found the bug and its solution. > > > > In port.c, in the function populate_from_sys_dev_parport, > > > > The /dev/port entries were added when checking files '.','..' and > > 'default'. > > > > Changing the test as below corrected the problem. > > > > de = readdir (parport); > > while (de) > > > > { > > > > /* Skip '.', '..' and 'default' entries */ > > > > if ((strcmp (de->d_name, ".") == 0) || > > > > (strcmp (de->d_name, "..") == 0) || > > > > (strcmp (de->d_name, "default") == 0) > > > > ) > > > > {} > > else > > > > { > > > > ... > > This is what the code currently looks like: > > de = readdir (parport); > while (de) > { > if (strcmp (de->d_name, ".") && > strcmp (de->d_name, "..") && // de->d_name != ".." && > strcmp (de->d_name, "default")) > { In the tests above, strcmp returns 0 when strings are equal: this means de->d_name != "." and de->d_name != ".." and de->d_name != "default" If the filename is ".", it can't be ".." neither "default", so the code is never executed. Changing the "&&" to "||" will make it work. // Should be executed if d_name != "." or ".." or "default" > ... > add_port (list, flags, de->d_name, device, udevice, base, hibase, > interrupt); > } > > de = readdir (parport); > } > > So it already skips over ".", "..", and "default": any of those entries > would cause one of the strcmp calls to return 0, so the condition would > be false. > > Do you see the problem with listed parallel ports when building 0.2.11 > from the tarball? Yes, that's why I made the change above. The code before modification looked as you mentioned. By the way, the same code change is needed in populate_from_parport, also in the file port.c. Regards, JP > > Tim. > */ |