# HG changeset patch # User insilmaril # Date 1196866683 0 # Node ID 4998bb082c735db8e55c447c72407eff2230c81c # Parent 92bebad145d277c6d0e598ca14f79d8f769c4427 Added files from Andrew Ng for Windows diff -r 92bebad145d2 -r 4998bb082c73 icons/vym.ico Binary file icons/vym.ico has changed diff -r 92bebad145d2 -r 4998bb082c73 mkdtemp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mkdtemp.cpp Wed Dec 05 14:58:03 2007 +0000 @@ -0,0 +1,67 @@ +#include +#include +#include +#include +#include + +extern "C" { +pid_t getpid (void); +} + +char * +mkdtemp(char *tmpl) +{ + // Implementation based on GLIBC implementation. + + static const char letters[] = + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + + static uint64_t value; + + const unsigned int ATTEMPTS_MIN = (62 * 62 * 62); + + int save_errno = errno; + + size_t len = strlen(tmpl); + if (len < 6 || strcmp(&tmpl[len - 6], "XXXXXX")) + { + errno = EINVAL; + return NULL; + } + + char *XXXXXX = &tmpl[len - 6]; + + uint64_t random_time_bits = time(NULL); + + value += (random_time_bits ^ getpid()); + + unsigned int count; + for (count = 0; count < ATTEMPTS_MIN; value += 7777, ++count) + { + uint64_t v = value; + + 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]; + + if (mkdir(tmpl) == 0) + { + errno = save_errno; + return tmpl; + } + + if (errno != EEXIST) + return NULL; + } + + errno = EEXIST; + return NULL; +} diff -r 92bebad145d2 -r 4998bb082c73 mkdtemp.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mkdtemp.h Wed Dec 05 14:58:03 2007 +0000 @@ -0,0 +1,6 @@ +#ifndef MKDTEMP_H +#define MKDTEMP_H + +extern char *mkdtemp(char *_template); + +#endif diff -r 92bebad145d2 -r 4998bb082c73 vym.rc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vym.rc Wed Dec 05 14:58:03 2007 +0000 @@ -0,0 +1,1 @@ +IDI_ICON1 ICON DISCARDABLE "icons/vym.ico"