diff options
author | CoprDistGit <infra@openeuler.org> | 2025-03-24 13:58:49 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2025-03-24 13:58:49 +0000 |
commit | a0749a3273bba247e73c7c620d97ba2d77ad5e40 (patch) | |
tree | f3be6f61b155227d5efa52c8696253e0eb9c3176 /gutenprint-postscriptdriver.patch | |
parent | f2f443387aa1f754263a00c8664563817ac14b8e (diff) |
automatic import of gutenprintopeneuler24.03_LTS
Diffstat (limited to 'gutenprint-postscriptdriver.patch')
-rw-r--r-- | gutenprint-postscriptdriver.patch | 98 |
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 |