From owner-freebsd-questions@FreeBSD.ORG Thu Oct 27 08:27:02 2005 Return-Path: X-Original-To: freebsd-questions@freebsd.org Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 63CAA16A41F for ; Thu, 27 Oct 2005 08:27:02 +0000 (GMT) (envelope-from igorr@speechpro.com) Received: from speechpro.com (speech-tech-2.ip.PeterStar.net [81.3.190.130]) by mx1.FreeBSD.org (Postfix) with ESMTP id F0B2D43D45 for ; Thu, 27 Oct 2005 08:27:01 +0000 (GMT) (envelope-from igorr@speechpro.com) Received: from sysadm.stc ([192.168.2.26]) by s1.stc with esmtp (Exim 4.53 (FreeBSD)) id 1EV36C-000MS8-JE for freebsd-questions@freebsd.org; Thu, 27 Oct 2005 12:27:00 +0400 Message-ID: <43608F45.2080600@speechpro.com> Date: Thu, 27 Oct 2005 12:26:45 +0400 From: Igor Robul User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051018) X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-questions@freebsd.org References: <20051027080228.60100.qmail@web36212.mail.mud.yahoo.com> <43608D9F.9020207@speechpro.com> In-Reply-To: <43608D9F.9020207@speechpro.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Archived: Yes Subject: Re: math/grace port: "libXcursor.so.1.0" not found ?? [SOLVED] X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Oct 2005 08:27:02 -0000 Igor Robul wrote: > dlopen() _does not_ reset dlerror() state on sucess, it just returns > non NULL. So you must not check dlerror() for error condition, you > need check return result of dlopen(), and if it is NULL, then you need > use dlerror(). > > So, code in grace: > > dlopen("library name", MODE); > if (dlerror() != NULL) { > report_error(); > exit(1); > Actual code in grace is: newkey.data = dlsym(handle, dl_function); if ((error = (char *) dlerror()) != NULL) { errmsg(error); dlclose(handle); return RETURN_FAILURE; } But I think it is needed to be something like (I dont know if they need "error" variable later): newkey.data = dlsym(handle, dl_function); if ( newkey.data == NULL) { errmsg(error=dlerror()); dlclose(handle); return RETURN_FAILURE; }