On 06/26/2013 01:11 AM, Jonathan Gray wrote:
program_invocation_short_name is glibc specific. Provide an
alternative using getprogname(), which can be found on *BSD and OS X.
Signed-off-by: Jonathan Gray <j...@jsg.id.au>
---
src/gallium/drivers/r300/r300_chipset.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git src/gallium/drivers/r300/r300_chipset.c
src/gallium/drivers/r300/r300_chipset.c
index 11061ed..7f51ccb 100644
--- src/gallium/drivers/r300/r300_chipset.c
+++ src/gallium/drivers/r300/r300_chipset.c
@@ -30,6 +30,14 @@
#include <stdio.h>
#include <errno.h>
+#undef GET_PROGRAM_NAME
+#ifdef __GLIBC__
+# define GET_PROGRAM_NAME() program_invocation_short_name
+#else /* *BSD and OS X */
+# include <stdlib.h>
+# define GET_PROGRAM_NAME() getprogname()
+#endif
+
/* r300_chipset: A file all to itself for deducing the various properties of
* Radeons. */
@@ -49,7 +57,7 @@ static void r300_apply_hyperz_blacklist(struct
r300_capabilities* caps)
int i;
for (i = 0; i < Elements(list); i++) {
- if (strcmp(list[i], program_invocation_short_name) == 0) {
+ if (strcmp(list[i], GET_PROGRAM_NAME()) == 0) {
caps->zmask_ram = 0;
caps->hiz_ram = 0;
break;
I think a new gallium utility function for this would be helpful. In
fact I've already implemented something like this for our windows driver.
Does the attached code look OK you to guys?
-Brian
#include "pipe/p_config.h"
#include "os/os_process.h"
#include "util/u_memory.h"
#if defined(PIPE_SUBSYSTEM_WINDOWS_USER)
# include <windows.h>
#endif
/**
* Return the name of the current process.
* \param procname returns the process name, always 0-terminated
* \param size size of the procname buffer
* \return TRUE or FALSE for success, failure
*/
boolean
os_get_process_name(char *procname, size_t size)
{
const char *name;
#if defined(PIPE_SUBSYSTEM_WINDOWS_USER)
char szProcessPath[MAX_PATH];
char *lpProcessName;
char *lpProcessExt;
GetModuleFileNameA(NULL, szProcessPath, Elements(szProcessPath));
lpProcessName = strrchr(szProcessPath, '\\');
lpProcessName = lpProcessName ? lpProcessName + 1 : szProcessPath;
lpProcessExt = strrchr(lpProcessName, '.');
if (lpProcessExt) {
*lpProcessExt = '\0';
}
name = lpProcessName;
#elif defined(__GLIBC__)
name = program_invocation_short_name;
#else /* *BSD and OS X */
name = getprogname();
#endif
assert(procname);
assert(size > 0);
if (name) {
strncpy(procname, name, size);
procname[size - 1] = 0;
return TRUE;
}
else {
return FALSE;
}
}
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev