azzedine
asked on
Compiling error
Dear All,
I compiled a project under Unix, I have got the following errors:
-------------------------- ---------- ------
CC -I. -DUNIX -c XPCFileStat.C -g -o XPCFileStat.o
"XPCFileStat.C", line 11: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 20: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 28: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 36: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 48: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 59: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 70: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 77: Error: The "&" operator can only be applied to a variable or other l-value.
"XPCFileStat.C", line 221: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException (char*).
"XPCFileStat.C", line 228: Error: The "&" operator can only be applied to a variable or other l-value.
2 Error(s) and 8 Warning(s) detected.
*** Error code 2
make: Fatal error: Command failed for target `XPCFileStat.o'
-------------------------- ---------- ---------- --------
Here is the main part of the program:
#include <XPCFileStat.h>
#include <iostream.h>
XPCFileStat::XPCFileStat()
{
long lMaxpath;
// Determine the maximum size of a pathname
if ((lMaxpath = pathconf("/", _PC_PATH_MAX)) == -1)
{
XPCException newExcept("Could not determine maximum pathname length"); // warning line 11
throw newExcept;
return;
}
// Allocate memory for the pathname
cFileName = new char[lMaxpath + 1];
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName"); // warning line 20
throw newExcept;
return;
}
// Store the current working directory
if (getcwd(cFileName, lMaxpath) == NULL)
{
XPCException newExcept("Could not get current working directory"); // warning line 28
throw newExcept;
return;
}
// Retrieve the file's statistics
if (lstat(cFileName, &sStatBuf) == -1)
{
XPCException newExcept("Could not obtain statics on directory."); // warning line 36
throw newExcept;
return;
}
}
XPCFileStat::XPCFileStat(c har *_psFileName)
{
// Allocate memory to store the pathname
cFileName = new char[strlen(_psFileName)+1 ];
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName"); // warming line 48
throw newExcept;
return;
}
// Copy the pathname to the private data member
strcpy(cFileName, _psFileName);
// Retrieve the file's statistics
if (lstat(cFileName, &sStatBuf) == -1)
{
XPCException newExcept("Could not obtain statics on directory."); // warning line 59
throw newExcept;
return;
}
}
XPCFileStat::XPCFileStat(c onst XPCFileStat &_oldClass)
{
cFileName = new char[sizeof(_oldClass.cFil eName)+1];
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName");// warning line 70
throw newExcept;
return;
}
strcpy(cFileName, _oldClass.sGetFileName());
memcpy((void *)&sStatBuf, (void *)&_oldClass.getStatBuf(), sizeof(struct stat)); //here is first error
}
enum eDirectoryTypes XPCFileStat::iGetFileType( )
{
// Extract the file type bits from st_mode and match them up with
// the file type constants
switch(sStatBuf.st_mode & S_IFMT)
{
.......................... ....
}
}
enum ePermissions XPCFileStat::iGetOwnerPerm issions()
{
// Extract the owner permission bits and return the appropriate
// permission value
switch(sStatBuf.st_mode & S_IRWXU)
{
.......................... .......... .......... .........
}
}
enum ePermissions XPCFileStat::iGetGroupPerm issions()
{
// Extract the group permission bits and return the appropriate
// permission value
switch(sStatBuf.st_mode & S_IRWXG)
{
.......................... .......... .......... ....
}
}
enum ePermissions XPCFileStat::iGetOtherPerm issions()
{
// Extract the "other users" permission bits and return the appropriate
// permission value
switch(sStatBuf.st_mode & S_IRWXO)
{
.......................... .......... ..
}
}
XPCFileStat &XPCFileStat::operator=(co nst XPCFileStat &_oldClass)
{
if (this == &_oldClass)
return *this;
if (sizeof(cFileName) < sizeof(_oldClass.sGetFileN ame()))
{
delete [] cFileName;
cFileName = new char[sizeof(cFileName)];
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName"); // warning line 221
throw newExcept;
return *this;
}
}
memcpy((void *)cFileName, (void *)_oldClass.sGetFileName() , sizeof(_oldClass.sGetFileN ame()));
memcpy((void *)&sStatBuf, (void *)&_oldClass.getStatBuf(), sizeof(struct stat)); // here is the 2 error
}
========================== ========== ========== ========== ========== =====
I would be glag if someone would help me to solve at least those two errors. Your help will be appreciated!
Thank you in advance for your reply.
Regards,
Azzedine
I compiled a project under Unix, I have got the following errors:
--------------------------
CC -I. -DUNIX -c XPCFileStat.C -g -o XPCFileStat.o
"XPCFileStat.C", line 11: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 20: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 28: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 36: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 48: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 59: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 70: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 77: Error: The "&" operator can only be applied to a variable or other l-value.
"XPCFileStat.C", line 221: Warning: String literal converted to char* in formal argument sMsg in call to XPCException::XPCException
"XPCFileStat.C", line 228: Error: The "&" operator can only be applied to a variable or other l-value.
2 Error(s) and 8 Warning(s) detected.
*** Error code 2
make: Fatal error: Command failed for target `XPCFileStat.o'
--------------------------
Here is the main part of the program:
#include <XPCFileStat.h>
#include <iostream.h>
XPCFileStat::XPCFileStat()
{
long lMaxpath;
// Determine the maximum size of a pathname
if ((lMaxpath = pathconf("/", _PC_PATH_MAX)) == -1)
{
XPCException newExcept("Could not determine maximum pathname length"); // warning line 11
throw newExcept;
return;
}
// Allocate memory for the pathname
cFileName = new char[lMaxpath + 1];
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName"); // warning line 20
throw newExcept;
return;
}
// Store the current working directory
if (getcwd(cFileName, lMaxpath) == NULL)
{
XPCException newExcept("Could not get current working directory"); // warning line 28
throw newExcept;
return;
}
// Retrieve the file's statistics
if (lstat(cFileName, &sStatBuf) == -1)
{
XPCException newExcept("Could not obtain statics on directory."); // warning line 36
throw newExcept;
return;
}
}
XPCFileStat::XPCFileStat(c
{
// Allocate memory to store the pathname
cFileName = new char[strlen(_psFileName)+1
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName"); // warming line 48
throw newExcept;
return;
}
// Copy the pathname to the private data member
strcpy(cFileName, _psFileName);
// Retrieve the file's statistics
if (lstat(cFileName, &sStatBuf) == -1)
{
XPCException newExcept("Could not obtain statics on directory."); // warning line 59
throw newExcept;
return;
}
}
XPCFileStat::XPCFileStat(c
{
cFileName = new char[sizeof(_oldClass.cFil
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName");// warning line 70
throw newExcept;
return;
}
strcpy(cFileName, _oldClass.sGetFileName());
memcpy((void *)&sStatBuf, (void *)&_oldClass.getStatBuf(),
}
enum eDirectoryTypes XPCFileStat::iGetFileType(
{
// Extract the file type bits from st_mode and match them up with
// the file type constants
switch(sStatBuf.st_mode & S_IFMT)
{
..........................
}
}
enum ePermissions XPCFileStat::iGetOwnerPerm
{
// Extract the owner permission bits and return the appropriate
// permission value
switch(sStatBuf.st_mode & S_IRWXU)
{
..........................
}
}
enum ePermissions XPCFileStat::iGetGroupPerm
{
// Extract the group permission bits and return the appropriate
// permission value
switch(sStatBuf.st_mode & S_IRWXG)
{
..........................
}
}
enum ePermissions XPCFileStat::iGetOtherPerm
{
// Extract the "other users" permission bits and return the appropriate
// permission value
switch(sStatBuf.st_mode & S_IRWXO)
{
..........................
}
}
XPCFileStat &XPCFileStat::operator=(co
{
if (this == &_oldClass)
return *this;
if (sizeof(cFileName) < sizeof(_oldClass.sGetFileN
{
delete [] cFileName;
cFileName = new char[sizeof(cFileName)];
if (!cFileName)
{
XPCException newExcept("Could not allocate memory for cFileName"); // warning line 221
throw newExcept;
return *this;
}
}
memcpy((void *)cFileName, (void *)_oldClass.sGetFileName()
memcpy((void *)&sStatBuf, (void *)&_oldClass.getStatBuf(),
}
==========================
I would be glag if someone would help me to solve at least those two errors. Your help will be appreciated!
Thank you in advance for your reply.
Regards,
Azzedine
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I will leave the following recommendation for this question in the Cleanup topic area:
Split: grg99 {http:#9725113} & Kashra {http:#9726778}
Please leave any comments here within the next seven days.
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
Tinchos
EE Cleanup Volunteer