Skip to content
Snippets Groups Projects
Commit f12fc490 authored by ballen4705's avatar ballen4705
Browse files

Should enable compilation with old 2.2 kernels with munged header files

git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@141 4ea69e1a-61f1-4043-bf83-b5c94c648137
parent e09f4f81
No related branches found
No related tags found
No related merge requests found
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include <errno.h> #include <errno.h>
#include "atacmds.h" #include "atacmds.h"
const char *CVSid1="$Id: atacmds.c,v 1.25 2002/10/26 06:44:42 ballen4705 Exp $" CVSID1; const char *CVSid1="$Id: atacmds.c,v 1.26 2002/10/26 11:32:33 ballen4705 Exp $" CVSID1;
// These Drive Identity tables are taken from hdparm 5.2, and are also // These Drive Identity tables are taken from hdparm 5.2, and are also
// given in the ATA/ATAPI specs for the IDENTIFY DEVICE command. Note // given in the ATA/ATAPI specs for the IDENTIFY DEVICE command. Note
...@@ -163,6 +163,7 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){ ...@@ -163,6 +163,7 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){
// Hedrick about this on Oct 17 2002. Please remove this comment // Hedrick about this on Oct 17 2002. Please remove this comment
// once the fix has made it into the stock kernel tree. // once the fix has made it into the stock kernel tree.
#if 0
// The following ifdef is a HACK to distinguish different versions // The following ifdef is a HACK to distinguish different versions
// of the header file defining hd_driveid // of the header file defining hd_driveid
#ifdef CFA_REQ_EXT_ERROR_CODE #ifdef CFA_REQ_EXT_ERROR_CODE
...@@ -170,6 +171,15 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){ ...@@ -170,6 +171,15 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){
#else #else
driveidchecksum=buf->words160_255[95]; driveidchecksum=buf->words160_255[95];
#endif #endif
#else
// This way is ugly and you may feel ill -- but it always works...
{
unsigned short *rawstructure=
(unsigned short *)(parms+HDIO_DRIVE_CMD_HDR_SIZE);
driveidchecksum=rawstructure[255];
}
#endif
if ((driveidchecksum & 0x00ff) == 0x00a5){ if ((driveidchecksum & 0x00ff) == 0x00a5){
// Device identity structure contains a checksum // Device identity structure contains a checksum
unsigned char cksum=0; unsigned char cksum=0;
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include <errno.h> #include <errno.h>
#include "atacmds.h" #include "atacmds.h"
const char *CVSid1="$Id: atacmds.cpp,v 1.25 2002/10/26 06:44:42 ballen4705 Exp $" CVSID1; const char *CVSid1="$Id: atacmds.cpp,v 1.26 2002/10/26 11:32:33 ballen4705 Exp $" CVSID1;
// These Drive Identity tables are taken from hdparm 5.2, and are also // These Drive Identity tables are taken from hdparm 5.2, and are also
// given in the ATA/ATAPI specs for the IDENTIFY DEVICE command. Note // given in the ATA/ATAPI specs for the IDENTIFY DEVICE command. Note
...@@ -163,6 +163,7 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){ ...@@ -163,6 +163,7 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){
// Hedrick about this on Oct 17 2002. Please remove this comment // Hedrick about this on Oct 17 2002. Please remove this comment
// once the fix has made it into the stock kernel tree. // once the fix has made it into the stock kernel tree.
#if 0
// The following ifdef is a HACK to distinguish different versions // The following ifdef is a HACK to distinguish different versions
// of the header file defining hd_driveid // of the header file defining hd_driveid
#ifdef CFA_REQ_EXT_ERROR_CODE #ifdef CFA_REQ_EXT_ERROR_CODE
...@@ -170,6 +171,15 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){ ...@@ -170,6 +171,15 @@ int ataReadHDIdentity (int device, struct hd_driveid *buf){
#else #else
driveidchecksum=buf->words160_255[95]; driveidchecksum=buf->words160_255[95];
#endif #endif
#else
// This way is ugly and you may feel ill -- but it always works...
{
unsigned short *rawstructure=
(unsigned short *)(parms+HDIO_DRIVE_CMD_HDR_SIZE);
driveidchecksum=rawstructure[255];
}
#endif
if ((driveidchecksum & 0x00ff) == 0x00a5){ if ((driveidchecksum & 0x00ff) == 0x00a5){
// Device identity structure contains a checksum // Device identity structure contains a checksum
unsigned char cksum=0; unsigned char cksum=0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment