I've forgot the others, but the most obvious one is the wrong documentation and example usage of dos.library/ReadLink() and ACTION_READ_LINK. The return value is not BOOL success value, but:
dp_Res1
-2 the passed buffer was too small
-1 some other error occured, dp_Res2 has more info
other: length of the string filled to buffer
And the same mapped to ReadLink(), where dp_Res2 is in IoErr(), and dp_Res1 in D0.
Thus example code of
if (ReadLink(...))
{
/* success - do stuff */
}
else
{
/* failed */
}
...is wrong. It should be:
if (ReadLink(...) > 0)