Hi All:
I have rewritten Bruja's opening book and I'll gladly share the code if you are willing to be a guinea pig and let me know of any problems or bugs.
Bruja has a small built-in default book so it's never without a book. I have plans (and hopefully a co-conspirator in the person of Alessandro Scotti) to write a program to build a large book from a pgn file that would use the same code.
The book is easy to integrate into your engine. It is a simple class with one method: GetBookMove(). You have to write a function to fill in the 64 squares with piece values the book understands. It returns a Winboard format move string, ie "e2e4". The book is position based so it can handle all transpositions. It can also handle color reversal should the opening so transpose.
If your engine is lacking a book and you are interested, please post here or email me at dhoneycutt(at)jjg.com (replace (at) with @).
Best
Dan H.