summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2015-06-30 10:32:00 +0100
committerChris Liddell <chris.liddell@artifex.com>2015-06-30 10:32:00 +0100
commit4310bfe55ad132a23bcd675e40f7560f6cfbe9d1 (patch)
treeb506902be79706a3171ec65d5490253a6674e79d
parent300ecfd75294fa48f97b91e243954fd728dddeca (diff)
downloadghostpdl-gs_strtok-apache_strtok.tar.gz
Modify code to use gs_strtok() instead of strtokgs_strtok-apache_strtok
-rw-r--r--gs/base/gsicc_cache.c8
-rw-r--r--gs/base/gsicc_manage.c42
-rw-r--r--gs/base/string_.h4
-rw-r--r--gs/devices/gdevwpr2.c8
-rw-r--r--gs/psi/dscparse.c10
-rw-r--r--pl/pjparse.c5
-rw-r--r--pl/pllfont.c6
7 files changed, 44 insertions, 39 deletions
diff --git a/gs/base/gsicc_cache.c b/gs/base/gsicc_cache.c
index d0c118e02..92cf6e1c0 100644
--- a/gs/base/gsicc_cache.c
+++ b/gs/base/gsicc_cache.c
@@ -1145,7 +1145,7 @@ gsicc_transform_named_color(const float tint_values[],
int buffer_count;
int count;
int code;
- char *pch, *temp_ptr;
+ char *pch, *temp_ptr, *last = NULL;
bool done;
int curr_name_size;
bool found_match;
@@ -1209,9 +1209,9 @@ gsicc_transform_named_color(const float tint_values[],
namedcolor_table->named_color = namedcolor_data;
for (k = 0; k < num_entries; k++) {
if (k == 0) {
- pch = strtok(buffptr,",;");
+ pch = gs_strtok(buffptr,",;", &last);
} else {
- pch = strtok(NULL,",;");
+ pch = gs_strtok(NULL,",;", &last);
}
/* Remove any /0d /0a stuff from start */
temp_ptr = pch;
@@ -1234,7 +1234,7 @@ gsicc_transform_named_color(const float tint_values[],
strncpy(namedcolor_data[k].colorant_name,temp_ptr,
namedcolor_data[k].name_size+1);
for (j = 0; j < 3; j++) {
- pch = strtok(NULL,",;");
+ pch = gs_strtok(NULL,",;", &last);
count = sscanf(pch,"%f",&(lab[j]));
}
lab[0] = lab[0]*65535/100.0;
diff --git a/gs/base/gsicc_manage.c b/gs/base/gsicc_manage.c
index 12da99355..89f2a1c7a 100644
--- a/gs/base/gsicc_manage.c
+++ b/gs/base/gsicc_manage.c
@@ -490,7 +490,7 @@ gsicc_profile_from_ps(cmm_profile_t *profile_data)
/* Fill in the actual source structure rending information */
static void
-gsicc_fill_srcgtag_item(gsicc_rendering_param_t *r_params, bool cmyk)
+gsicc_fill_srcgtag_item(gsicc_rendering_param_t *r_params, char **pstrlast, bool cmyk)
{
char *curr_ptr;
int blackptcomp;
@@ -498,20 +498,20 @@ gsicc_fill_srcgtag_item(gsicc_rendering_param_t *r_params, bool cmyk)
int ri, count = 0;
/* Get the intent */
- curr_ptr = strtok(NULL, "\t,\32\n\r");
+ curr_ptr = gs_strtok(NULL, "\t,\32\n\r", pstrlast);
count = sscanf(curr_ptr, "%d", &ri);
r_params->rendering_intent = ri | gsRI_OVERRIDE;
/* Get the black point compensation setting */
- curr_ptr = strtok(NULL, "\t,\32\n\r");
+ curr_ptr = gs_strtok(NULL, "\t,\32\n\r", pstrlast);
count = sscanf(curr_ptr, "%d", &blackptcomp);
r_params->black_point_comp = blackptcomp | gsBP_OVERRIDE;
/* Get the over-ride embedded ICC boolean */
- curr_ptr = strtok(NULL, "\t,\32\n\r");
+ curr_ptr = gs_strtok(NULL, "\t,\32\n\r", pstrlast);
count = sscanf(curr_ptr, "%d", &or_icc);
r_params->override_icc = or_icc;
if (cmyk) {
/* Get the preserve K control */
- curr_ptr = strtok(NULL, "\t,\32\n\r");
+ curr_ptr = gs_strtok(NULL, "\t,\32\n\r", pstrlast);
count = sscanf(curr_ptr, "%d", &preserve_k);
r_params->preserve_black = preserve_k | gsKP_OVERRIDE;
} else {
@@ -545,7 +545,7 @@ gsicc_set_srcgtag_struct(gsicc_manager_t *icc_manager, const char* pname,
stream *str;
int code;
int info_size;
- char *buffer_ptr, *curr_ptr;
+ char *buffer_ptr, *curr_ptr, *last;
int num_bytes;
char str_format_key[6], str_format_file[6];
int k;
@@ -608,10 +608,10 @@ gsicc_set_srcgtag_struct(gsicc_manager_t *icc_manager, const char* pname,
}
while (start || strlen(curr_ptr) > 0) {
if (start) {
- curr_ptr = strtok(buffer_ptr, "\t,\32\n\r");
+ curr_ptr = gs_strtok(buffer_ptr, "\t,\32\n\r", &last);
start = false;
} else {
- curr_ptr = strtok(NULL, "\t,\32\n\r");
+ curr_ptr = gs_strtok(NULL, "\t,\32\n\r", &last);
}
if (curr_ptr == NULL) break;
/* Now go ahead and see if we have a match */
@@ -621,7 +621,7 @@ gsicc_set_srcgtag_struct(gsicc_manager_t *icc_manager, const char* pname,
object is not to be color managed. Also, if the
curr_ptr is Replace which indicates we will be doing
direct replacement of the colors. */
- curr_ptr = strtok(NULL, "\t,\32\n\r");
+ curr_ptr = gs_strtok(NULL, "\t,\32\n\r", &last);
if (strncmp(curr_ptr, GSICC_SRCTAG_NOCM, strlen(GSICC_SRCTAG_NOCM)) == 0 &&
strlen(curr_ptr) == strlen(GSICC_SRCTAG_NOCM)) {
cmm = gsCMM_NONE;
@@ -673,42 +673,42 @@ gsicc_set_srcgtag_struct(gsicc_manager_t *icc_manager, const char* pname,
srcgtag->cmyk_profiles[gsSRC_GRAPPRO] = icc_profile;
srcgtag->cmyk_rend_cond[gsSRC_GRAPPRO].cmm = cmm;
if (cmm == gsCMM_DEFAULT) {
- gsicc_fill_srcgtag_item(&(srcgtag->cmyk_rend_cond[gsSRC_GRAPPRO]), true);
+ gsicc_fill_srcgtag_item(&(srcgtag->cmyk_rend_cond[gsSRC_GRAPPRO]), &last, true);
}
break;
case IMAGE_CMYK:
srcgtag->cmyk_profiles[gsSRC_IMAGPRO] = icc_profile;
srcgtag->cmyk_rend_cond[gsSRC_IMAGPRO].cmm = cmm;
if (cmm == gsCMM_DEFAULT) {
- gsicc_fill_srcgtag_item(&(srcgtag->cmyk_rend_cond[gsSRC_IMAGPRO]), true);
+ gsicc_fill_srcgtag_item(&(srcgtag->cmyk_rend_cond[gsSRC_IMAGPRO]), &last, true);
}
break;
case TEXT_CMYK:
srcgtag->cmyk_profiles[gsSRC_TEXTPRO] = icc_profile;
srcgtag->cmyk_rend_cond[gsSRC_TEXTPRO].cmm = cmm;
if (cmm == gsCMM_DEFAULT) {
- gsicc_fill_srcgtag_item(&(srcgtag->cmyk_rend_cond[gsSRC_TEXTPRO]), true);
+ gsicc_fill_srcgtag_item(&(srcgtag->cmyk_rend_cond[gsSRC_TEXTPRO]), &last, true);
}
break;
case GRAPHIC_RGB:
srcgtag->rgb_profiles[gsSRC_GRAPPRO] = icc_profile;
srcgtag->rgb_rend_cond[gsSRC_GRAPPRO].cmm = cmm;
if (cmm == gsCMM_DEFAULT) {
- gsicc_fill_srcgtag_item(&(srcgtag->rgb_rend_cond[gsSRC_GRAPPRO]), false);
+ gsicc_fill_srcgtag_item(&(srcgtag->rgb_rend_cond[gsSRC_GRAPPRO]), &last, false);
}
break;
case IMAGE_RGB:
srcgtag->rgb_profiles[gsSRC_IMAGPRO] = icc_profile;
srcgtag->rgb_rend_cond[gsSRC_IMAGPRO].cmm = cmm;
if (cmm == gsCMM_DEFAULT) {
- gsicc_fill_srcgtag_item(&(srcgtag->rgb_rend_cond[gsSRC_IMAGPRO]), false);
+ gsicc_fill_srcgtag_item(&(srcgtag->rgb_rend_cond[gsSRC_IMAGPRO]), &last, false);
}
break;
case TEXT_RGB:
srcgtag->rgb_profiles[gsSRC_TEXTPRO] = icc_profile;
srcgtag->rgb_rend_cond[gsSRC_TEXTPRO].cmm = cmm;
if (cmm == gsCMM_DEFAULT) {
- gsicc_fill_srcgtag_item(&(srcgtag->rgb_rend_cond[gsSRC_TEXTPRO]), false);
+ gsicc_fill_srcgtag_item(&(srcgtag->rgb_rend_cond[gsSRC_TEXTPRO]), &last, false);
}
break;
case GSICC_NUM_SRCGTAG_KEYS:
@@ -1349,7 +1349,7 @@ gsicc_set_device_profile_colorants(gx_device *dev, char *name_str)
gsicc_colorname_t *name_entry;
gsicc_colorname_t **curr_entry;
gs_memory_t *mem;
- char *temp_ptr;
+ char *temp_ptr, *last = NULL;
int done;
gsicc_namelist_t *spot_names;
char *pch;
@@ -1421,7 +1421,7 @@ gsicc_set_device_profile_colorants(gx_device *dev, char *name_str)
spot_names->name_str[str_len] = 0;
curr_entry = &(spot_names->head);
/* Go ahead and tokenize now */
- pch = strtok(name_str, ",");
+ pch = gs_strtok(name_str, ",", &last);
count = 0;
while (pch != NULL) {
temp_ptr = pch;
@@ -1447,7 +1447,7 @@ gsicc_set_device_profile_colorants(gx_device *dev, char *name_str)
/* Get the next entry location */
curr_entry = &((*curr_entry)->next);
count += 1;
- pch = strtok(NULL, ",");
+ pch = gs_strtok(NULL, ",", &last);
}
spot_names->count = count;
/* Create the color map. Query the device to find out where these
@@ -2546,7 +2546,7 @@ int
gs_setdevicenprofileicc(const gs_state * pgs, gs_param_string * pval)
{
int code = 0;
- char *pname, *pstr, *pstrend;
+ char *pname, *pstr, *pstrend, *last = NULL;
int namelen = (pval->size)+1;
gs_memory_t *mem = pgs->memory;
@@ -2564,7 +2564,7 @@ gs_setdevicenprofileicc(const gs_state * pgs, gs_param_string * pval)
return_error(gs_error_VMerror);
memcpy(pname,pval->data,namelen-1);
pname[namelen-1] = 0;
- pstr = strtok(pname, ",;");
+ pstr = gs_strtok(pname, ",;", &last);
while (pstr != NULL) {
namelen = strlen(pstr);
/* Remove leading and trailing spaces from the name */
@@ -2581,7 +2581,7 @@ gs_setdevicenprofileicc(const gs_state * pgs, gs_param_string * pval)
code = gsicc_set_profile(pgs->icc_manager, (const char*) pstr, namelen, DEVICEN_TYPE);
if (code < 0)
return gs_throw(code, "cannot find devicen icc profile");
- pstr = strtok(NULL, ",;");
+ pstr = gs_strtok(NULL, ",;", &last);
}
gs_free_object(mem, pname,
"set_devicen_profile_icc");
diff --git a/gs/base/string_.h b/gs/base/string_.h
index 9e153b3fd..3be7bfc02 100644
--- a/gs/base/string_.h
+++ b/gs/base/string_.h
@@ -43,4 +43,8 @@
# endif
#endif
+#include "gsstrtok.h"
+
+#define strtok DO_NOT_USE_STRTOK
+
#endif /* string__INCLUDED */
diff --git a/gs/devices/gdevwpr2.c b/gs/devices/gdevwpr2.c
index 28935b61b..b6cb8b0f4 100644
--- a/gs/devices/gdevwpr2.c
+++ b/gs/devices/gdevwpr2.c
@@ -121,7 +121,7 @@
#include "gdevprn.h"
#include "gdevpccm.h"
-
+#include "string_.h"
#include "windows_.h"
#include <shellapi.h>
#include "gp_mswin.h"
@@ -954,7 +954,7 @@ static int
win_pr2_getdc(gx_device_win_pr2 * wdev)
{
char *device;
- char driverbuf[512];
+ char driverbuf[512], *dbuflast = NULL;
char *driver;
char *output;
char *devcap;
@@ -1044,8 +1044,8 @@ win_pr2_getdc(gx_device_win_pr2 * wdev)
wchar_to_utf8(driverbuf, unidrvbuf);
}
#endif
- driver = strtok(driverbuf, ",");
- output = strtok(NULL, ",");
+ driver = gs_strtok(driverbuf, ",", &dbuflast);
+ output = gs_strtok(NULL, ",", dbuflast);
if (!gp_OpenPrinter(device, &hprinter))
return FALSE;
diff --git a/gs/psi/dscparse.c b/gs/psi/dscparse.c
index 16ca027b2..6888466c7 100644
--- a/gs/psi/dscparse.c
+++ b/gs/psi/dscparse.c
@@ -40,7 +40,7 @@
#include <stdio_.h> /* for sprintf(), not file I/O */
#include <stdlib.h>
-#include <string.h>
+#include <string_.h>
#include <ctype.h>
#define MAXSTR 256
@@ -1088,7 +1088,7 @@ dsc_read_line(CDSC *dsc)
* <type> ::= Hex | Binary | ASCII (Type of data)
* <bytesorlines> ::= Bytes | Lines (Read in bytes or lines)
*/
- char begindata[MAXSTR+1];
+ char begindata[MAXSTR+1], *bdatalast = NULL;
int cnt;
const char *numberof, *bytesorlines;
cnt = dsc->line_length;
@@ -1096,9 +1096,9 @@ dsc_read_line(CDSC *dsc)
cnt = sizeof(begindata)-1;
memcpy(begindata, dsc->line, cnt);
begindata[cnt] = '\0';
- numberof = strtok(begindata+12, " \r\n");
- strtok(NULL, " \r\n"); /* dump type */
- bytesorlines = strtok(NULL, " \r\n");
+ numberof = gs_strtok(begindata+12, " \r\n", &bdatalast);
+ gs_strtok(NULL, " \r\n", &bdatalast); /* dump type */
+ bytesorlines = gs_strtok(NULL, " \r\n", &bdatalast);
if (bytesorlines == NULL)
bytesorlines = "Bytes";
diff --git a/pl/pjparse.c b/pl/pjparse.c
index ae401c0e7..add19c1e8 100644
--- a/pl/pjparse.c
+++ b/pl/pjparse.c
@@ -19,6 +19,7 @@
#include "stat_.h"
#include "memory_.h"
#include "stdio_.h"
+#include "string_.h"
#include "scommon.h"
#include "gdebug.h"
#include "gp.h"
@@ -392,7 +393,7 @@ pjl_check_font_path(char *path_list, gs_memory_t * mem)
/* lookup a font path and check if any files (presumably fonts are
present) */
char tmp_path[PJL_PATH_NAME_LENGTH + 1];
- char *tmp_pathp = tmp_path;
+ char *tmp_pathp = tmp_path, *tplast = NULL;
const char pattern[] = "*";
char tmp_path_and_pattern[PJL_PATH_NAME_LENGTH + 1 + 1]; /* pattern + null */
char *dirname;
@@ -403,7 +404,7 @@ pjl_check_font_path(char *path_list, gs_memory_t * mem)
/* for each path search for fonts. If we find them return we only
check if the directory resource has files without checking if
the files are indeed fonts. */
- while ((dirname = strtok(tmp_pathp, ";")) != NULL) {
+ while ((dirname = gs_strtok(tmp_pathp, ";", &tplast)) != NULL) {
file_enum *fe;
strcpy(tmp_path_and_pattern, dirname);
diff --git a/pl/pllfont.c b/pl/pllfont.c
index 9e70d9817..6076fabd9 100644
--- a/pl/pllfont.c
+++ b/pl/pllfont.c
@@ -606,7 +606,7 @@ pl_load_built_in_fonts(const char *pathname, gs_memory_t * mem,
byte key[3];
/* max pathname of 1024 including pattern */
char tmp_path_copy[1024];
- char *tmp_pathp;
+ char *tmp_pathp, *tplast = NULL;
bool found;
bool found_any = false;
const char pattern[] = "*";
@@ -630,9 +630,9 @@ pl_load_built_in_fonts(const char *pathname, gs_memory_t * mem,
}
/* Enumerate through the files in the path */
- /* make a copy of the path for strtok */
+ /* make a copy of the path for gs_strtok */
strcpy(tmp_path_copy, pathname);
- for (tmp_pathp = tmp_path_copy; (tmp_pathp = strtok(tmp_pathp, ";")) != NULL; /* NB shouldn't use strtok */
+ for (tmp_pathp = tmp_path_copy; (tmp_pathp = gs_strtok(tmp_pathp, ";", &tplast)) != NULL;
tmp_pathp = NULL) {
int code;
file_enum *fe;