From 8a843e4b3c646f2410b31e7318b2e3f383bfcecf Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 14 Feb 2010 08:13:50 +0000 Subject: [PATCH] - tempnam would set the errno to 2 on the Mac even though everything seemed to be working as expected. SVN r2161 (trunk) --- tools/updaterevision/updaterevision.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/tools/updaterevision/updaterevision.c b/tools/updaterevision/updaterevision.c index 3f0dce4e9..55e81bc40 100644 --- a/tools/updaterevision/updaterevision.c +++ b/tools/updaterevision/updaterevision.c @@ -30,15 +30,21 @@ int main(int argc, char **argv) // Use svnversion to get the revision number. If that fails, pretend it's // revision 0. Note that this requires you have the command-line svn tools installed. sprintf (run, "svnversion -cn %s", argv[1]); - if ((name = tempnam(NULL, "svnout")) != NULL && - (stream = freopen(name, "w+b", stdout)) != NULL && - system(run) == 0 && - errno == 0 && - fseek(stream, 0, SEEK_SET) == 0 && - fgets(currev, sizeof currev, stream) == currev && - (isdigit(currev[0]) || (currev[0] == '-' && currev[1] == '1'))) + if ((name = tempnam(NULL, "svnout")) != NULL) { - gotrev = 1; +#ifdef __APPLE__ + // tempnam will return errno of 2 even though it is successful for our purposes. + errno = 0; +#endif + if((stream = freopen(name, "w+b", stdout)) != NULL && + system(run) == 0 && + errno == 0 && + fseek(stream, 0, SEEK_SET) == 0 && + fgets(currev, sizeof currev, stream) == currev && + (isdigit(currev[0]) || (currev[0] == '-' && currev[1] == '1'))) + { + gotrev = 1; + } } if (stream != NULL) {