Hi Martin, There are two different file that happens to have the same name that are affected by my patch. One resides under <stdcxx>/src/file.cpp and the other is <stdcxx>/tests/src/file.cpp. The patch for this issue resides under the former. I'll update STDCXX-1019 with this.
http://svn.apache.org/repos/asf/stdcxx/branches/4.2.x/src/file.cpp http://svn.apache.org/repos/asf/stdcxx/branches/4.2.x/tests/src/file.cpp I'm not a committer. I don't believe I am able to send the change log. > -----Original Message----- > From: Martin Sebor [mailto:[EMAIL PROTECTED] > Sent: Saturday, October 11, 2008 4:19 PM > To: dev@stdcxx.apache.org > Subject: Re: [PATCH] STDCXX-1019 __rw_mkstemp in file.cpp should honor > TMPDIR environment variable > > Scott Zhong wrote: > > Fix to fnamebuf array size and invoke getenv only once. > > The fix looks good to me but I'm having trouble applying the patch. > You are changing the definition of something called fnamebuf around > line 260 but there's no string "fnamebuf" in the file, either on > trunk or on branches/4.2.x: > > $ svn cat > http://svn.apache.org/repos/asf/stdcxx/branches/4.2.x/tests/src/file.cpp > http://svn.apache.org/repos/asf/stdcxx/trunk/tests/src/file.cpp | grep > fnamebuf || echo NOT FOUND > NOT FOUND > > Could also send your change log entry with the final patch? > > Thanks > Martin > > > > > Index: src/file.cpp > > =================================================================== > > --- src/file.cpp (revision 702657) > > +++ src/file.cpp (working copy) > > @@ -42,6 +42,7 @@ > > #include <stdio.h> // for P_tmpdir, std{err,in,out}, tmpnam() > > #include <stdlib.h> // for mkstemp(), strtoul(), size_t > > #include <ctype.h> // for isalpha(), isspace(), toupper() > > +#include <string.h> // for memcpy() > > > > > > #if defined (_WIN32) && !defined (__CYGWIN__) > > @@ -58,6 +59,9 @@ > > # define _BINARY 0 > > #endif > > > > +#ifndef PATH_MAX > > +# define PATH_MAX 1024 > > +#endif > > > > #include <rw/_file.h> > > #include <rw/_defs.h> > > @@ -257,8 +261,18 @@ > > # define P_tmpdir "/tmp" > > # endif // P_tmpdir > > > > - char fnamebuf[] = P_tmpdir "/.rwtmpXXXXXX"; > > + const char *tmpdir = getenv ("TMPDIR"); > > + if (tmpdir == NULL) { > > + tmpdir = P_tmpdir; > > + } > > > > + char fnamebuf [PATH_MAX]; > > + > > + size_t len = strlen (tmpdir) - 1; > > + > > + memcpy (fnamebuf, tmpdir, len); > > + memcpy (fnamebuf+len, "/.rwtmpXXXXXX", sizeof ("/.rwtmpXXXXXX")); > > + > > fd = mkstemp (fnamebuf); > > > > if (fd >= 0) > > @@ -294,7 +308,7 @@ > > // names that have no extension. tempnam uses malloc to allocate > > // space for the filename; the program is responsible for freeing > > // this space when it is no longer needed. > > - char* const fname = tempnam (P_tmpdir, ".rwtmp"); > > + char* const fname = tempnam (tmpdir, ".rwtmp"); > > > > if (!fname) > > return -1; > > > >> -----Original Message----- > >> From: Scott Zhong [mailto:[EMAIL PROTECTED] > >> Sent: Wednesday, October 08, 2008 11:03 AM > >> To: dev@stdcxx.apache.org > >> Subject: RE: [PATCH] STDCXX-1019 __rw_mkstemp in file.cpp should honor > >> TMPDIR environment variable > >> > >> Posted wrong diff. here is the correct diff > >> > >> Index: src/file.cpp > >> =================================================================== > >> --- src/file.cpp (revision 702657) > >> +++ src/file.cpp (working copy) > >> @@ -42,6 +42,7 @@ > >> #include <stdio.h> // for P_tmpdir, std{err,in,out}, tmpnam() > >> #include <stdlib.h> // for mkstemp(), strtoul(), size_t > >> #include <ctype.h> // for isalpha(), isspace(), toupper() > >> +#include <string.h> // for memcpy() > >> > >> > >> #if defined (_WIN32) && !defined (__CYGWIN__) > >> @@ -257,8 +258,15 @@ > >> # define P_tmpdir "/tmp" > >> # endif // P_tmpdir > >> > >> - char fnamebuf[] = P_tmpdir "/.rwtmpXXXXXX"; > >> + char *tmpdir = getenv ("TMPDIR") == NULL ? P_tmpdir : getenv > >> ("TMPDIR"); > >> > >> + char fnamebuf [sizeof (tmpdir) + sizeof ("/.rwtmpXXXXXX")]; > >> + > >> + size_t len = sizeof (tmpdir) - 1; > >> + > >> + memcpy (fnamebuf, tmpdir, len); > >> + memcpy (fnamebuf+len, "/.rwtmpXXXXXX", sizeof ("/.rwtmpXXXXXX")); > >> + > >> fd = mkstemp (fnamebuf); > >> > >> if (fd >= 0) > >> @@ -294,7 +302,7 @@ > >> // names that have no extension. tempnam uses malloc to allocate > >> // space for the filename; the program is responsible for freeing > >> // this space when it is no longer needed. > >> - char* const fname = tempnam (P_tmpdir, ".rwtmp"); > >> + char* const fname = tempnam (tmpdir, ".rwtmp"); > >> > >> if (!fname) > >> return -1; > >> > >>> -----Original Message----- > >>> From: Scott Zhong [mailto:[EMAIL PROTECTED] > >>> Sent: Wednesday, October 08, 2008 10:15 AM > >>> To: dev@stdcxx.apache.org > >>> Subject: [PATCH] STDCXX-1019 __rw_mkstemp in file.cpp should honor > >> TMPDIR > >>> environment variable > >>> > >>> https://issues.apache.org/jira/browse/STDCXX-1019 > >>> > >>> file affected: <stdcxx>/src/file.cpp > >>> > >>> Index: src/file.cpp > >>> =================================================================== > >>> --- src/file.cpp (revision 702657) > >>> +++ src/file.cpp (working copy) > >>> @@ -257,7 +257,9 @@ > >>> # define P_tmpdir "/tmp" > >>> # endif // P_tmpdir > >>> > >>> - char fnamebuf[] = P_tmpdir "/.rwtmpXXXXXX"; > >>> + char *tmpdir = getenv ("TMPDIR") == NULL ? P_tmpdir : getenv > >>> ("TMPDIR"); > >>> + > >>> + char fnamebuf[] = tmpdir "/.rwtmpXXXXXX"; > >>> > >>> fd = mkstemp (fnamebuf); > >>> > >>> @@ -294,7 +296,7 @@ > >>> // names that have no extension. tempnam uses malloc to > > allocate > >>> // space for the filename; the program is responsible for > > freeing > >>> // this space when it is no longer needed. > >>> - char* const fname = tempnam (P_tmpdir, ".rwtmp"); > >>> + char* const fname = tempnam (tmpdir, ".rwtmp"); > >>> > >>> if (!fname) > >>> return -1; > >