summaryrefslogtreecommitdiff
path: root/print/ghostscript7-x11/files/patch-src-gp_unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'print/ghostscript7-x11/files/patch-src-gp_unix.c')
-rw-r--r--print/ghostscript7-x11/files/patch-src-gp_unix.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/print/ghostscript7-x11/files/patch-src-gp_unix.c b/print/ghostscript7-x11/files/patch-src-gp_unix.c
new file mode 100644
index 000000000000..85f56e3cc021
--- /dev/null
+++ b/print/ghostscript7-x11/files/patch-src-gp_unix.c
@@ -0,0 +1,83 @@
+--- src/gp_unix.c.orig 2003-01-17 09:49:02.000000000 +0900
++++ src/gp_unix.c 2015-08-22 01:54:32.507486000 +0900
+@@ -41,11 +41,60 @@
+
+ #endif
+
++#ifdef GS_DEVS_SHARED
++#ifndef GS_DEVS_SHARED_DIR
++# define GS_DEVS_SHARED_DIR "/usr/lib/ghostscript/7.07"
++#endif
++
++/*
++ * use shared library for drivers, always load them when starting, this
++ * avoid too many modifications, and since it is supported only under linux
++ * and applied as a patch (preferable).
++ */
++#include <sys/types.h>
++#include <limits.h>
++#include <dirent.h>
++#include <dlfcn.h>
++#include <string.h>
++
++void
++gp_init(void)
++{
++ DIR* dir = NULL;
++ struct dirent* dirent;
++ char buff[PATH_MAX];
++ char* pbuff;
++ void* handle;
++ void (*gs_shared_init)(void);
++
++ dir = opendir(GS_DEVS_SHARED_DIR);
++ if (dir == 0) return;
++
++ lprintf("DEBUG 2\n");
++
++ while ((dirent = readdir(dir)) != 0) {
++ snprintf(buff, sizeof(buff), "%s/%s", GS_DEVS_SHARED_DIR, dirent->d_name);
++ pbuff = buff + strlen(buff) - 3;
++ if (strcmp(pbuff, ".so") != 0)
++ continue;
++ handle = dlopen(buff, RTLD_NOW);
++ if (handle == NULL)
++ continue;
++ gs_shared_init = dlsym(handle, "gs_shared_init");
++ if (gs_shared_init != NULL)
++ (*gs_shared_init)();
++ }
++ lprintf("DEBUG 3\n");
++
++ closedir(dir);
++}
++#else
+ /* Do platform-dependent initialization. */
+ void
+ gp_init(void)
+ {
+ }
++#endif
+
+ /* Do platform-dependent cleanup. */
+ void
+@@ -57,6 +106,7 @@
+ void
+ gp_do_exit(int exit_status)
+ {
++ exit(exit_status);
+ }
+
+ /* ------ Miscellaneous ------ */
+@@ -67,7 +117,11 @@
+ const char *
+ gp_strerror(int errnum)
+ {
++#ifdef HAVE_STRERROR
++ return strerror(errnum);
++#else
+ return NULL;
++#endif
+ }
+
+ /* ------ Date and time ------ */