summaryrefslogtreecommitdiff
path: root/gutenprint-postscriptdriver.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2025-03-24 13:58:49 +0000
committerCoprDistGit <infra@openeuler.org>2025-03-24 13:58:49 +0000
commita0749a3273bba247e73c7c620d97ba2d77ad5e40 (patch)
treef3be6f61b155227d5efa52c8696253e0eb9c3176 /gutenprint-postscriptdriver.patch
parentf2f443387aa1f754263a00c8664563817ac14b8e (diff)
automatic import of gutenprintopeneuler24.03_LTS
Diffstat (limited to 'gutenprint-postscriptdriver.patch')
-rw-r--r--gutenprint-postscriptdriver.patch98
1 files changed, 98 insertions, 0 deletions
diff --git a/gutenprint-postscriptdriver.patch b/gutenprint-postscriptdriver.patch
new file mode 100644
index 0000000..d4b5ff7
--- /dev/null
+++ b/gutenprint-postscriptdriver.patch
@@ -0,0 +1,98 @@
+diff -up gutenprint-5.3.3/src/main/gutenprint-internal.h.postscriptdriver gutenprint-5.3.3/src/main/gutenprint-internal.h
+--- gutenprint-5.3.3/src/main/gutenprint-internal.h.postscriptdriver 2018-01-28 03:32:45.000000000 +0100
++++ gutenprint-5.3.3/src/main/gutenprint-internal.h 2019-11-06 12:13:29.936061606 +0100
+@@ -54,6 +54,8 @@ extern void stpi_init_printer(void);
+ #define BUFFER_FLAG_FLIP_X 0x1
+ #define BUFFER_FLAG_FLIP_Y 0x2
+ extern stp_image_t* stpi_buffer_image(stp_image_t* image, unsigned int flags);
++extern stp_list_t *stp_paths_copy_with_prefix(stp_list_t* list,
++ const char *prefix);
+
+ #define STPI_ASSERT(x,v) \
+ do \
+diff -up gutenprint-5.3.3/src/main/module.c.postscriptdriver gutenprint-5.3.3/src/main/module.c
+--- gutenprint-5.3.3/src/main/module.c.postscriptdriver 2019-05-25 16:34:21.000000000 +0200
++++ gutenprint-5.3.3/src/main/module.c 2019-11-06 12:13:29.936061606 +0100
+@@ -159,12 +159,20 @@ int stp_module_load(void)
+ }
+ else
+ {
++ const char *prefix = getenv("DESTDIR");
+ #ifdef USE_LTDL
+ stp_path_split(dir_list, getenv("LTDL_LIBRARY_PATH"));
+ stp_path_split(dir_list, lt_dlgetsearchpath());
+ #else
+ stp_path_split(dir_list, PKGMODULEDIR);
+ #endif
++ if (prefix)
++ {
++ stp_list_t *prefix_list;
++ prefix_list = stp_paths_copy_with_prefix(dir_list, prefix);
++ stp_list_destroy(dir_list);
++ dir_list = prefix_list;
++ }
+ }
+ #ifdef USE_LTDL
+ file_list = stp_path_search(dir_list, ".la");
+diff -up gutenprint-5.3.3/src/main/path.c.postscriptdriver gutenprint-5.3.3/src/main/path.c
+--- gutenprint-5.3.3/src/main/path.c.postscriptdriver 2019-05-25 16:34:21.000000000 +0200
++++ gutenprint-5.3.3/src/main/path.c 2019-11-06 12:29:30.709190171 +0100
+@@ -154,6 +154,17 @@ stp_generate_path(const char *path)
+ return NULL;
+ stp_list_set_freefunc(dir_list, stp_list_node_free_data);
+ stp_path_split(dir_list, path);
++ if (!strncmp(PKGXMLDATADIR, path, strlen(path)))
++ {
++ const char *prefix = getenv("DESTDIR");
++ if (prefix)
++ {
++ stp_list_t *prefix_list;
++ prefix_list = stp_paths_copy_with_prefix(dir_list, prefix);
++ stp_list_destroy(dir_list);
++ dir_list = prefix_list;
++ }
++ }
+ return dir_list;
+ }
+
+@@ -262,6 +273,40 @@ stp_path_split(stp_list_t *list, /* List
+ }
+ }
+
++/*
++ * Split a PATH-type string (colon-delimited) into separate
++ * directories.
++ */
++stp_list_t *
++stp_paths_copy_with_prefix(stp_list_t *list, /* List to add prefix to */
++ const char *prefix) /* Prefix to add */
++{
++ stp_list_t *new_list;
++ stp_list_item_t *item;
++ int prefixlen = strlen (prefix);
++ if (!(new_list = stp_list_create()))
++ return NULL;
++
++ item = stp_list_get_start (list);
++ while (item)
++ {
++ const char *data;
++ char *new_data;
++ int len;
++ data = stp_list_item_get_data (item);
++ len = strlen (data);
++ new_data = (char *) stp_malloc(prefixlen + 1 + len + 1);
++ strncpy(new_data, prefix, prefixlen);
++ new_data[prefixlen] = '/';
++ strcpy(new_data + prefixlen + 1, data);
++ stp_list_item_create(new_list, NULL, new_data);
++
++ item = stp_list_item_next (item);
++ }
++
++ return new_list;
++}
++
+ /* Adapted from GNU libc <dirent.h>
+ These macros extract size information from a `struct dirent *'.
+ They may evaluate their argument multiple times, so it must not