* adfWriteRDSKblock * */
| 729 | * |
| 730 | */ |
| 731 | RETCODE |
| 732 | adfWriteRDSKblock(struct Device *dev, struct bRDSKblock* rdsk) |
| 733 | { |
| 734 | uint8_t buf[LOGICAL_BLOCK_SIZE]; |
| 735 | uint32_t newSum; |
| 736 | struct nativeFunctions *nFct; |
| 737 | RETCODE rc2, rc = RC_OK; |
| 738 | |
| 739 | if (dev->readOnly) { |
| 740 | (*adfEnv.wFct)("adfWriteRDSKblock : can't write block, read only device"); |
| 741 | return RC_ERROR; |
| 742 | } |
| 743 | |
| 744 | memset(buf,0,LOGICAL_BLOCK_SIZE); |
| 745 | |
| 746 | strncpy(rdsk->id,"RDSK",4); |
| 747 | rdsk->size = sizeof(struct bRDSKblock)/sizeof(int32_t); |
| 748 | rdsk->blockSize = LOGICAL_BLOCK_SIZE; |
| 749 | rdsk->badBlockList = -1; |
| 750 | |
| 751 | strncpy(rdsk->diskVendor,"ADFlib ",8); |
| 752 | strncpy(rdsk->diskProduct,"harddisk.adf ",16); |
| 753 | strncpy(rdsk->diskRevision,"v1.0",4); |
| 754 | |
| 755 | memcpy(buf, rdsk, sizeof(struct bRDSKblock)); |
| 756 | #ifdef LITT_ENDIAN |
| 757 | swapEndian(buf, SWBL_RDSK); |
| 758 | #endif |
| 759 | |
| 760 | newSum = adfNormalSum(buf, 8, LOGICAL_BLOCK_SIZE); |
| 761 | swLong(buf+8, newSum); |
| 762 | |
| 763 | nFct = adfEnv.nativeFct; |
| 764 | if (dev->isNativeDev) |
| 765 | rc2=(*nFct->adfNativeWriteSector)(dev, 0, LOGICAL_BLOCK_SIZE, buf); |
| 766 | else |
| 767 | rc2=adfWriteDumpSector(dev, 0, LOGICAL_BLOCK_SIZE, buf); |
| 768 | |
| 769 | if (rc2!=RC_OK) |
| 770 | return RC_ERROR; |
| 771 | |
| 772 | return rc; |
| 773 | } |
| 774 | |
| 775 | |
| 776 | /* |
no test coverage detected