tried, remove it from windows build, will need portable codes elsewhere
parent
5a34892fe2
commit
18324c72c2
|
@ -152,6 +152,9 @@ set(GD_PROGRAMS gdcmpgif)
|
|||
|
||||
if (PNG_FOUND)
|
||||
set(GD_PROGRAMS ${GD_PROGRAMS} gdtopng pngtogd webpng)
|
||||
if (WIN32 AND NOT MINGW AND NOT MSYS)
|
||||
set(GD_PROGRAMS ${GD_PROGRAMS} webpng)
|
||||
endif (WIN32 AND NOT MINGW AND NOT MSYS)
|
||||
if (ZLIB_FOUND)
|
||||
set(GD_PROGRAMS ${GD_PROGRAMS} gdparttopng gd2topng pngtogd2)
|
||||
endif()
|
||||
|
|
89
src/webpng.c
89
src/webpng.c
|
@ -41,95 +41,6 @@ static void usage(const char *msg)
|
|||
fprintf(stderr, "\nError: %s\n", msg);
|
||||
exit(msg == NULL ? 0 : 1);
|
||||
}
|
||||
static const char letters[] =
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||
|
||||
#ifdef _MSC_VER
|
||||
extern int optind, opterr, optopt;
|
||||
extern char *optarg;
|
||||
/* This is only used here */
|
||||
int
|
||||
mkstemp (char *tmpl)
|
||||
{
|
||||
int len;
|
||||
char *XXXXXX;
|
||||
static unsigned long long value;
|
||||
unsigned long long random_time_bits;
|
||||
unsigned int count;
|
||||
int fd = -1;
|
||||
int save_errno = errno;
|
||||
|
||||
#define ATTEMPTS_MIN (62 * 62 * 62)
|
||||
|
||||
/* The number of times to attempt to generate a temporary file. To
|
||||
conform to POSIX, this must be no smaller than TMP_MAX. */
|
||||
#if ATTEMPTS_MIN < TMP_MAX
|
||||
unsigned int attempts = TMP_MAX;
|
||||
#else
|
||||
unsigned int attempts = ATTEMPTS_MIN;
|
||||
#endif
|
||||
|
||||
len = strlen (tmpl);
|
||||
if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX"))
|
||||
{
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* This is where the Xs start. */
|
||||
XXXXXX = &tmpl[len - 6];
|
||||
|
||||
/* Get some more or less random data. */
|
||||
{
|
||||
SYSTEMTIME stNow;
|
||||
FILETIME ftNow;
|
||||
|
||||
// get system time
|
||||
GetSystemTime(&stNow);
|
||||
stNow.wMilliseconds = 500;
|
||||
if (!SystemTimeToFileTime(&stNow, &ftNow))
|
||||
{
|
||||
errno = -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
random_time_bits = (((unsigned long long)ftNow.dwHighDateTime << 32)
|
||||
| (unsigned long long)ftNow.dwLowDateTime);
|
||||
}
|
||||
value += random_time_bits ^ (unsigned long long)GetCurrentThreadId ();
|
||||
|
||||
for (count = 0; count < attempts; value += 7777, ++count)
|
||||
{
|
||||
unsigned long long v = value;
|
||||
|
||||
/* Fill in the random bits. */
|
||||
XXXXXX[0] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[1] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[2] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[3] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[4] = letters[v % 62];
|
||||
v /= 62;
|
||||
XXXXXX[5] = letters[v % 62];
|
||||
|
||||
fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL, _S_IREAD | _S_IWRITE);
|
||||
if (fd >= 0)
|
||||
{
|
||||
errno = save_errno;
|
||||
return fd;
|
||||
}
|
||||
else if (errno != EEXIST)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* We got out of the loop because we ran out of combinations to try. */
|
||||
errno = EEXIST;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void err(const char *fmt, ...)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue