safecopy reading from /dev/raw devices fails, even if the blocksize is set correctly to a multiple of the sector boundary.
The reason is that for read() to work on a raw device, the buffer memory must be aligned to a multiple of the sector size, otherwise read() will return -1, EINVAL.
1. Always align buffer pointer address to multiple of blocksize
2. Using /dev/raw is deprecated, look into implementing O_DIRECT in next safecopy version
This is supposed to get fixed in safecopy 1.5, release date unknown.
side-bugs: debug output does not state cause of read error when reporting read errors (safecopy --debug=255) - might be fixed, too.