Hi, I am trying to solve a problem with regards with getline()
/usr/home/muhammad/Open64/osprey/../osprey/ipa/main/analyze/ipa_devirtual.cxx: In member function 'void IPA_VIRTUAL_FUNCTION_TRANSFORM::Read_Callsite()':
/usr/home/muhammad/Open64/osprey/../osprey/ipa/main/analyze/ipa_devirtual.cxx:830: error: no matching function for call to 'getline(char**, long unsigned int*, FILE*&)'
gmake[3]: *** [ipa_devirtual.o] Error 1
gmake[3]: Leaving directory `/usr/home/muhammad/Open64/osprey/targdir/ipa'
gmake[2]: *** [default] Error 2
Code snippet here:
Code:
void IPA_VIRTUAL_FUNCTION_TRANSFORM::Read_Callsite()
{
if (IPA_Devirtualization_Input_File) {
FILE *fp = fopen(IPA_Devirtualization_Input_File, "r");
if (fp == NULL) {
fprintf(stderr, "Invalid DEVIR_CALLSITE file %s!\n", IPA_Devirtualization_Input_File);
return;
}
size_t sz = 4096;
char *linebuf = (char*)malloc(sz);
char buffer[2048];
int lineno;
int callsite_id;
while (getline(&linebuf, &sz, fp) != -1) {
if (*linebuf == '#') {
// comment line starts with #
continue;
}
if ( sscanf(linebuf, "Caller:%s line:%d callsite_id:%d",
buffer, &lineno, &callsite_id) == 3) {
DevirCallsiteInfo *p = new DevirCallsiteInfo(buffer, lineno, callsite_id);
DevirCallsiteMap::iterator itr = theDevirCallsiteMap.find(buffer);
if (itr == theDevirCallsiteMap.end()) {
// create a new entry with a new vector
vector<DevirCallsiteInfo *> *v = new vector<DevirCallsiteInfo *> ( );
v->push_back(p);
theDevirCallsiteMap.insert(std::make_pair(strdup(buffer), v));
}
else {
// add the callsite info to the end of the exisiting vector
itr->second->push_back(p);
}
}
Thank you.