Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 May 2002 18:03:22 -0700
From:      Albert Kinderman <albert.kinderman@csun.edu>
To:        freebsd-hackers@freebsd.org
Subject:   c++ and dlerror(): Linux vs FreeBSD
Message-ID:  <3CE456DA.8010200@csun.edu>

next in thread | raw e-mail | index | archive | help
Disclaimer:  I am not a programmer!

I am trying to compile scribus-0.7.2, a Page Layout program, built 
against qt3.  /usr/ports/print/scribus contains scribus-0.5, which 
is the qt2 version.

On my Debian GNU/Linux, make works without a hitch.  On my FreeBSD 
stable box, I get a series of errors of the following type:

scribus.cpp:4217: assignment to `char *' from `const char *' 
discards qualifiers
scribus.cpp: In method `int ScribusApp::DLLType(QString)':
scribus.cpp:4240: assignment to `char *' from `const char *' 
discards qualifiers
*** Error code 1

Stop in /usr/local/scribus-0.7.2/scribus

These errors come from code similar to code that is given as an 
example of how to handle exceptions in the Linux man page for 
dlerror, /usr/compat/linux/man/man3/dlopen.3  Specifically, the 
last error was produced by

int ScribusApp::DLLType(QString name)
{
	void *mo;
	char *error;
	typedef int (*sdem0)();
	sdem0 demo;
	QString pfad = PREL;
	pfad += "/share/scribus/plugins/" + name;
	mo = dlopen(pfad, RTLD_LAZY);
	if (!mo)
		return 0;
	dlerror();
	demo = (sdem0)dlsym(mo, "Type");
	if ((error = dlerror()) != NULL)   <-- line 4240
		{
		dlclose(mo);
		return 0;
		}
	int an = (*demo)();
	dlclose(mo);
	return an;
}


Both the FreeBSD and the Linux man pages list

const char *dlerror(void)

Why does c++ on FreeBSD produce an error on
error = dlerror()
and c++ on Debian Linux does not?  What is the proper fix?

Al

-- 
Albert Kinderman  California State University, Northridge
     Department of Systems and Operations Management


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3CE456DA.8010200>