Coup de main sur une déclaration qui ne compile pas
Bonjour,
Avant tout, un fichier .cc c'est un fichier c++ ? Si "non", le modo peut déplacer, merci à lui.
Et donc, totalement newbie depuis 30 ans en C, désolé de vous importuner mais je suis face à un truc qui me laisse sans voix : j'ai récupéré les sources de cdrdao (pas tout jeune : circa 2019) et j'ai suivi le classique ./configure qui s'est bien déroulé, puis make qui a un peu crié lorsqu'il a trouvé un char qui devait être unsigned char, là j'ai trouvé avec l'aide de ggl, mais pour ce qui suit, je suis sec :
Code:
1 2 3 4 5 6 7 8 9
| ScsiIf-linux.cc: In static member function static ScsiIf::ScanData* ScsiIf::scan(int*, char*):
ScsiIf-linux.cc:287:37: error: no matching function for call to stat::stat(const char [22], stat*)
287 | if (stat(SYSFS_SCSI_DEVICES, &st) != 0) {
| ^
In file included from /usr/include/fcntl.h:78,
from ScsiIf-linux.cc:23:
/usr/include/x86_64-linux-gnu/bits/stat.h:46:8: note: candidate: stat::stat()
46 | struct stat
| ^~~~ |
Je ne vais pas aller trifouiller le /usr/include/x86_64-linux-gnu/bits/stat.h, donc la chose doit se régler là :
Code:
1 2 3 4
|
ScsiIf-linux.cc:287:37: error: no matching function for call to stat::stat(const char [22], stat*)
287 | if (stat(SYSFS_SCSI_DEVICES, &st) != 0) {
| ^ |
et voilà l'extrait concerné du ScsiIf-linux.cc :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| // Scan implementation uses sysfs to
ScsiIf::ScanData *ScsiIf::scan(int *len, char* scsi_dev_path)
{
struct stat st;
int matches = 0;
unsigned i;
ScanData* sdata = NULL;
char* path = NULL;
glob_t pglob;
// la ligne 287 c'est celle qui est dessous :
if (stat(SYSFS_SCSI_DEVICES, &st) != 0) {
log_message(-2, "Unable to access sysfs filesystem at %s",
SYSFS_SCSI_DEVICES);
goto fail;
} |
Grand merci à celui qui pourra me mettre sur la voie,