I have added several new options to WinBoard:
/firstTimeOdds=N
/secondTimeOdds=N
(where N is an integer) divides all times mentioned in the time control for the first (second) engine by N. This applies to increment, base time and classical time control time supplements. It thus means that the first (second) engine has to play N times as fast. In addition, the opponent's time relayed by the 'otim' command will be converted to the engines own time scale, by multiplying the time on the WinBoard clock by the ratio of opponent's handicap factor and the engine's own handicap factor.
(Note that pndering tends to undo the effect of time odds, so this option is best used with ponder off.)
Options that follow the engine (in a tournament)
I made it possible for WinBoard options to be 'hidden' in the engine command line (which normally only specifies options for that particiular engine, like hash-table size). If the engine command line contains the word "WBopt", this word, and everything that follows it, is stripped from the line (i.e. not passed to the engine when the latter is started). In stead everything that follows the "WBopt" is passed to WinBoard, after the winboard.ini and command-line options have been read (in that order). This way, the options will overrule the options in .ini file or passed to WinBoard by the tournament manager.
Through this mechanism, an engine can tailor the WinBoard behavior to its needs. E.g., if it is known that a certain engine always exceeeds time by 1 sec, and we don't want to have it forfeit because of that, we could play that engine (and only that engine) with /autocallFlag=FALSE, by installing it as
"engine.exe -hash=128 WBopt /autocallFlag=FALSE"
and run the tournament with /autocallFlag=TRUE in the winboard.ini.
To make it possible to pass WB options that are dependent on if the engine is playing as 'first' or as 'second' engine, any '%s' occurring in the options after 'WBopt' will be replaced by WinBoard by "first" or "second" before parsing, depending on which engine provided the option. So by installing an engine as
"Smirfoglot -H32 WBopt /%sTimeOdds=2"
you would have a Smirf in the tournament with a hash table of 32MB, that always is given only half the time set for the tourney. The WB option would translate to /firstTimeOdds or /secondTimeOdds as was needed to handicap Smirf.