mode;
(void) FormatLocaleString(key,MaxTextExtent,"SOFTWARE\\%s",products[i]);
- for (j=0; j < 2; j++)
+ for (j=0; j < (ssize_t) (sizeof(registry_roots)/sizeof(registry_roots[0]));\r
+ j++)
{
mode=KEY_READ | flags;
if (RegOpenKeyExA(registry_roots[j].hkey,key,0,mode,&hkey) ==
static int NTGhostscriptGetString(const char *name,BOOL *is_64_bit,
char *value,const size_t length)
{
- char
- key[MaxTextExtent];
+ char\r
+ buffer[MaxTextExtent],\r
+ *directory;
int
extent;
/*
Get a string from the installed Ghostscript.
*/
- *value='\0';
+ *value='\0';\r
+ directory=(char *) NULL;\r
+ if (LocaleCompare(name, "GS_DLL") == 0)\r
+ {\r
+ directory=GetEnvironmentValue("MAGICK_GHOSTSCRIPT_PATH");\r
+ if (directory != (char *) NULL)\r
+ {\r
+ (void) FormatLocaleString(buffer,MaxTextExtent,"%s%sgsdll32.dll",\r
+ directory,DirectorySeparator);\r
+ if (IsPathAccessible(buffer) != MagickFalse)\r
+ {\r
+ (void) CopyMagickString(value,buffer,length);\r
+ if (is_64_bit != NULL)\r
+ *is_64_bit=FALSE;\r
+ return(TRUE);\r
+ }\r
+ (void) FormatLocaleString(buffer,MaxTextExtent,"%s%sgsdll64.dll",\r
+ directory,DirectorySeparator);\r
+ if (IsPathAccessible(buffer) != MagickFalse)\r
+ {\r
+ (void) CopyMagickString(value,buffer,length);\r
+ if (is_64_bit != NULL)\r
+ *is_64_bit=TRUE;\r
+ return(TRUE);\r
+ }\r
+ return(FALSE);\r
+ }\r
+ }
if (product_family == NULL)
- {
- flags=0;
+ {
+ flags=0;
#if defined(KEY_WOW64_32KEY)
#if defined(_WIN64)
- flags=KEY_WOW64_64KEY;
+ flags=KEY_WOW64_64KEY;
#else
- flags=KEY_WOW64_32KEY;
+ flags=KEY_WOW64_32KEY;
#endif
- (void) NTLocateGhostscript(flags,&root_index,&product_family,
- &major_version,&minor_version);
- if (product_family == NULL)
+ (void) NTLocateGhostscript(flags,&root_index,&product_family,
+ &major_version,&minor_version);
+ if (product_family == NULL)
#if defined(_WIN64)
- flags=KEY_WOW64_32KEY;
- else
- is_64_bit_version=TRUE;
+ flags=KEY_WOW64_32KEY;
+ else
+ is_64_bit_version=TRUE;
#else
flags=KEY_WOW64_64KEY;
#endif
#endif
- }
+ }
if (product_family == NULL)
- {
- (void) NTLocateGhostscript(flags,&root_index,&product_family,
+ {
+ (void) NTLocateGhostscript(flags,&root_index,&product_family,
&major_version,&minor_version);
- }
+ }
if (product_family == NULL)
return(FALSE);
if (is_64_bit != NULL)
*is_64_bit=is_64_bit_version;
- (void) FormatLocaleString(key,MaxTextExtent,"SOFTWARE\\%s\\%d.%02d",
+ (void) FormatLocaleString(buffer,MaxTextExtent,"SOFTWARE\\%s\\%d.%02d",
product_family,major_version,minor_version);
extent=(int) length;
- if (NTGetRegistryValue(registry_roots[root_index].hkey,key,flags,name,value,
- &extent) == 0)
+ if (NTGetRegistryValue(registry_roots[root_index].hkey,buffer,flags,name,
+ value,&extent) == 0)
{
(void) LogMagickEvent(ConfigureEvent,GetMagickModule(),
- "registry: \"%s\\%s\\%s\"=\"%s\"",registry_roots[root_index].name,key,
- name,value);
+ "registry: \"%s\\%s\\%s\"=\"%s\"",registry_roots[root_index].name,
+ buffer,name,value);
return(TRUE);
}
return(FALSE);
{
char
buffer[MaxTextExtent],
+ *directory,
filename[MaxTextExtent];
register char
*p,
*q;
- *path='\0';
- if (NTGhostscriptGetString("GS_LIB",NULL,buffer,MaxTextExtent) == FALSE)
- return(FALSE);
+ *path='\0';\r
+ directory=GetEnvironmentValue("MAGICK_GHOSTSCRIPT_FONT_PATH");\r
+ if (directory != (char *) NULL)\r
+ {\r
+ (void) CopyMagickString(buffer,directory,MaxTextExtent);\r
+ directory=DestroyString(directory);\r
+ }\r
+ else\r
+ {\r
+ if (NTGhostscriptGetString("GS_LIB",NULL,buffer,MaxTextExtent) == FALSE)\r
+ return(FALSE);\r
+ }
for (p=buffer-1; p != (char *) NULL; p=strchr(p+1,DirectoryListSeparator))
{
(void) CopyMagickString(path,p+1,length+1);
if (IsPathAccessible(filename) != MagickFalse)
return(TRUE);
}
- (void) FormatLocaleString(filename,MaxTextExtent,"c:%sgs%sfonts%sfonts.dir",
- DirectorySeparator,DirectorySeparator,DirectorySeparator);
- if (IsPathAccessible(filename) != MagickFalse)
- return(TRUE);
return(FALSE);
}
\f