...sorry for the math and computer sciences lesson.
No need to apologize, at all! This is all a learning experience for me - pretty much all of the C++ I know (beyond the intro course I'm taking) is from this project; I'm learning as I go along. Without this post, I probably never would have learned what the << operator did on ints like that.
Hey, I was wondering if you've seen http://www.gamesas.com/bgsforums/index.php?showtopic=861565&hl=.

No, I hadn't. Looks like he's doing things differently, but with similar effect. His is probably
better (you're changing things in memory instead of creating a bunch of new nif's), but I suspect it's also much more difficult to write. This utility may be able to provide functionality more quickly than his can.
If at any point in the future, both of our utilities provide the functionality you need, you are almost guaranteed to be better off with scanti's, from what I understand.
Did you have any success fixing this?
Any hope for a soon update?
LP
I have literally spent the last week bashing my head against the BSA reader, going to rather extreme lengths to try to determine what was wrong with it.
Finally, during some testing last night, I stopped and read my debug print-outs more carefully, and realized that I had made a very, very dumb mistake while updating it to link zlib statically instead of dynamically. I had changed my list of BSA filenames to include the path, but had forgotten to change the BSA read function to stop including the path - so I was adding the path twice. Obviously, the BSA reader couldn't read what it could not find. This problem existed only in my version; the one currently available does not have this problem. Talk about shooting myself in the foot.
Much thanks to Scruggs, behippo, and Timeslip for their advice, suggestions, troubleshooting, and above-all patience with me as I tried to figure this out. And many apologies for wasting their time with such a stupid problem that I should have caught myself in the first place.
Now, as it turns out, there
was a problem with certain BSA files - when I tried to copy the file into your folders, I didn't create any of the directories - I assumed Windows handled that for you. Turns out, it does not. I added a little bit of code to create any folders that you don't have, and voila, it works! Any BSA'd meshes whose folders
did exist still worked - which is why the Iron Longsword I tested on worked, I already had a Weapons\Iron folder for other models. I did not have, for example, a Weapons\Club folder, for Club.nif, so when I tested the Club I very quickly realized what was wrong and fixed it.
I'm currently updating the tagging system to be (much) more robust, and I'm updating NifGetOffHand to return the model as a Torch instead of returning it as a Bip01 L ForearmTwist with a translation/rotation. Works much better, or so I am told; haven't tested it yet. The mesh is still used as a Shield in the CS, though, so the implementation should not change for any scripters who use the function (are there any? I know opaj was working on a better version of the demonstration plug-in, but I haven't heard from him in about a week...)
The updated version will be available probably tonight. I have two finals tomorrow though, so I may not have time to do all the testing I want to do tonight, in which case it will be tomorrow night.
After that, I can finally get working on those requests. Most of them should be available pretty soon.