18 #ifndef _MAGICKCORE_UTILITY_PRIVATE_H
19 #define _MAGICKCORE_UTILITY_PRIVATE_H
25 #if defined(__cplusplus) || defined(c_plusplus)
36 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
37 static inline wchar_t *create_wchar_path(
const char *utf8)
45 count=MultiByteToWideChar(CP_UTF8,0,utf8,-1,NULL,0);
58 if (longPath == (
wchar_t *) NULL)
59 return((
wchar_t *) NULL);
60 count=MultiByteToWideChar(CP_UTF8,0,buffer,-1,longPath,count);
62 count=GetShortPathNameW(longPath,shortPath,MAX_PATH);
65 return((
wchar_t *) NULL);
67 wcscpy(wideChar,shortPath+4);
71 if (wideChar == (
wchar_t *) NULL)
72 return((
wchar_t *) NULL);
73 count=MultiByteToWideChar(CP_UTF8,0,utf8,-1,wideChar,count);
77 return((
wchar_t *) NULL);
85 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__)
86 return(access(path,mode));
94 path_wide=create_wchar_path(path);
95 if (path_wide == (
wchar_t *) NULL)
97 status=_waccess(path_wide,mode);
105 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
106 return(fopen(path,mode));
115 path_wide=create_wchar_path(path);
116 if (path_wide == (
wchar_t *) NULL)
117 return((FILE *) NULL);
118 mode_wide=create_wchar_path(mode);
119 if (mode_wide == (
wchar_t *) NULL)
122 return((FILE *) NULL);
124 file=_wfopen(path_wide,mode_wide);
131 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__MINGW64__)
138 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
139 return(open(path,flags,mode));
147 path_wide=create_wchar_path(path);
148 if (path_wide == (
wchar_t *) NULL)
150 status=_wopen(path_wide,flags,mode);
156 static inline FILE *
popen_utf8(
const char *command,
const char *type)
158 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
159 return(popen(command,type));
168 command_wide=create_wchar_path(command);
169 if (command_wide == (
wchar_t *) NULL)
170 return((FILE *) NULL);
171 type_wide=create_wchar_path(type);
172 if (type_wide == (
wchar_t *) NULL)
175 return((FILE *) NULL);
177 file=_wpopen(command_wide,type_wide);
186 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
187 return(unlink(path));
195 path_wide=create_wchar_path(path);
196 if (path_wide == (
wchar_t *) NULL)
198 status=_wremove(path_wide);
204 static inline int rename_utf8(
const char *source,
const char *destination)
206 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
207 return(rename(source,destination));
216 source_wide=create_wchar_path(source);
217 if (source_wide == (
wchar_t *) NULL)
219 destination_wide=create_wchar_path(destination);
220 if (destination_wide == (
wchar_t *) NULL)
225 status=_wrename(source_wide,destination_wide);
234 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
235 return(stat(path,attributes));
243 path_wide=create_wchar_path(path);
244 if (path_wide == (WCHAR *) NULL)
246 status=wstat(path_wide,attributes);
252 #if defined(__cplusplus) || defined(c_plusplus)
static FILE * popen_utf8(const char *command, const char *type)
Definition: utility-private.h:156
char * path
Definition: type.h:55
static int stat_utf8(const char *path, struct stat *attributes)
Definition: utility-private.h:232
MagickBooleanType
Definition: magick-type.h:214
static int remove_utf8(const char *path)
Definition: utility-private.h:184
MagickExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
Definition: memory.c:526
static FILE * fopen_utf8(const char *path, const char *mode)
Definition: utility-private.h:103
#define MaxTextExtent
Definition: method-attribute.h:106
static int open_utf8(const char *path, int flags, mode_t mode)
Definition: utility-private.h:136
MagickPrivate MagickBooleanType ShredFile(const char *)
Definition: utility.c:1791
MagickExport ssize_t FormatLocaleString(char *restrict string, const size_t length, const char *restrict format,...)
Definition: locale.c:475
static int rename_utf8(const char *source, const char *destination)
Definition: utility-private.h:204
static int access_utf8(const char *path, int mode)
Definition: utility-private.h:83
MagickExport void * RelinquishMagickMemory(void *memory)
Definition: memory.c:986
#define MagickPrivate
Definition: method-attribute.h:99