Yes, ofcourse. *source is a BMAP, and you can't compare BMAP to int. And the second attempt: again *source is a BMAP, so you can't assign it a BMAP*.
The problem is you never assign anything to b_dot. Either make source a BMAP** and use *source in the function and call it with &b_dot, or make it b_dot=bmapCheck(b_dot, b_dot_file);. I would opt for the first option since it will guarantee that the pointer is not empty after you call that function (so you don't have to remember to assign it).
Remember that in your code, source is only a temporary copy of the contents of b_dot (which is a memory address). source is deallocated (not the thing it points to! only the 4 bytes that store the memory address) when the function ends, so assigning to it makes no sense.