Hey Christoph,
Yes, TA_PDetsFromPath() or TA_PDetsFromByteArray() will return TA_OK if it successfully loaded a new TurboActivate.dat file and TA_FAIL if it's re-loading an existing file. All other error codes should be handled as fatal.
The reason we just don't blindly say TA_OK on passing in the same file is that we like to distinguish between the 2 so customers can improve their program's efficiency.
But you can treat both TA_OK and TA_FAIL as successes and everything else as a failure.