|
From: | Jan Forch |
Subject: | [Freeipmi-devel] SOLARIS PORTING Patches to merge into new FreeIPMI release |
Date: | Mon, 09 Mar 2009 17:48:58 +0100 |
User-agent: | Thunderbird 2.0.0.16 (X11/20080807) |
Hi experts, I am sending patches which had to be applied on unzipped freeipmi-0.7.4.tar.gz source files else FreeIPMI doesn't work properly on Solaris. I attached some comments (##### blocks) to them to understand purpose of changes easily. Feel free to send me a feedback. In case someone is aware of some other places in the source files where similar bug is presented please share it! Thanks, have a nice day ;-) Jan Forch, Sun Microsystems ----------------------------------------------------------------------------------------------------- | List of patche files aplied on unzipped freeipmi-0.7.4.tar.gz source files. ----------------------------------------------------------------------------------------------------- > ls freeipmi2.patch freeipmi.patch PATCHES: #################################################################################### # 1) freeipmi.patch # The problem is that the behavior of the function getpwuid_r (...) is different on Solaris and Linux. # On Linux function returns 0 in case that everything is OK and not 0 value as an error number. # But on Solaris returns NULL in case of error and pointer if it was successful. # So != had to be changed to ==. #################################################################################### > cat freeipmi.patch diff -ru ../freeipmi-0.7.4_orig/common/src/toolcommon/tool-sdr-cache-common.c ./common/src/toolcommon/tool-sdr-cache-common.c --- ../freeipmi-0.7.4_orig/common/src/toolcommon/tool-sdr-cache-common.c Tue Jan 6 07:09:05 2009 +++ ./common/src/toolcommon/tool-sdr-cache-common.c Thu Jan 8 02:04:15 2009 @@ -229,8 +229,9 @@ if (getpwuid_r (user_id, &pwd, tbuf, - tbuf_len) != 0) + tbuf_len) == NULL) { + /* User not found or another error */ PSTDOUT_PERROR(pstate, "getpwuid_r"); return -1; } #################################################################################### # 1) freeipmi2.patch # Almost same as the first one. But changes had to be made in two places in the source file. #################################################################################### > cat freeipmi2.patch diff -ru ../freeipmi-0.7.4_orig/libfreeipmi/src/api/ipmi-api.c ./libfreeipmi/src/api/ipmi-api.c --- ../freeipmi-0.7.4_orig/libfreeipmi/src/api/ipmi-api.c Tue Jan 6 07:09:04 2009 +++ ./libfreeipmi/src/api/ipmi-api.c Mon Jan 12 09:34:54 2009 @@ -274,11 +274,11 @@ &h_errnop)); API_ERR_HOSTNAME_INVALID_CLEANUP(hptr); #elif defined(HAVE_FUNC_GETHOSTBYNAME_R_5) - API_ERR_HOSTNAME_INVALID_CLEANUP(!gethostbyname_r(hostname, + API_ERR_HOSTNAME_INVALID_CLEANUP(gethostbyname_r(hostname, &hent, buf, GETHOSTBYNAME_AUX_BUFLEN, - &h_errnop)); + &h_errnop) != NULL); #else /* !HAVE_FUNC_GETHOSTBYNAME_R */ API_ERR_HOSTNAME_INVALID_CLEANUP(!freeipmi_gethostbyname_r(hostname, &hent, @@ -419,11 +419,11 @@ &h_errnop)); API_ERR_HOSTNAME_INVALID_CLEANUP(hptr); #elif defined(HAVE_FUNC_GETHOSTBYNAME_R_5) - API_ERR_HOSTNAME_INVALID_CLEANUP(!gethostbyname_r(hostname, + API_ERR_HOSTNAME_INVALID_CLEANUP(gethostbyname_r(hostname, &hent, buf, GETHOSTBYNAME_AUX_BUFLEN, - &h_errnop)); + &h_errnop) != NULL); #else /* !HAVE_FUNC_GETHOSTBYNAME_R */ API_ERR_HOSTNAME_INVALID_CLEANUP(!freeipmi_gethostbyname_r(hostname, &hent, |
[Prev in Thread] | Current Thread | [Next in Thread] |