Please review: Patch for non-Linux serial set_baud_rate()

Eric Pouech eric.pouech at orange.fr
Sun Jul 4 14:19:04 CDT 2010


Le 30/06/2010 20:26, Ken Thomases a écrit :
> On Jun 30, 2010, at 11:47 AM, Ken Thomases wrote:
>
>    
>> I happened to stumble across some code which didn't look quite right in dlls/ntdll/serial.c.  However, I have no expertise in serial comms or termios.  Also, I have no means to test the change I propose.  On the other hand, the change seems clearly right and conforms to what I learn from man pages, etc.
>>      
> On re-reading, I realize I didn't say what the nature of the problem and change are:
>
> set_baud_rate() needs to poke at a termios structure and enter the desired baud rate into its fields.  However, the baud rate is represented differently on Linux than on other platforms.  This is detected with an "#ifdef CBAUD" test.  On Linux, the baud rate goes into the c_cflag field; elsewhere, it goes into dedicated c_ospeed and c_ispeed fields.
>
> At some point, somebody extended the non-Linux branch to support higher baud rates, to match capability that the Linux branch had.  However, they seem to have just copied the Linux-appropriate code and pasted it into the non-Linux branch.  So, the code is stuffing the baud rate into the c_cflag field and not the c_ospeed field.  In the non-Linux branch, the high baud rate cases of the switch statement don't match the lower baud rate cases.
>
> My proposed change sets the baud rate via the c_ospeed field for all cases on the non-Linux branch.
>
> Cheers,
> Ken
>
>
>
>
>
>    
looks ok to me
A+

-- 
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the ingenuity of a complete idiot." (Douglas Adams)






More information about the wine-devel mailing list