"Dimitrie O. Paun" dpaun@rogers.com writes:
I'm still not sure how to support building with PE .exes
Could you outline the problems you can see? Since it is still not in the tree, instead of patches I send comments and questions.
+#include <shellapi.h> +#include <shellapi.h>
Do we really need it twice?
- while (1)
- {
va_start(ap, fmt);
- n = vsnprintf (p, size, fmt, ap);
- va_end(ap);
if (n > -1 && n < size) return p;
- size = min( size*2, n+1 );
- if(!(p = realloc (p, size))) fatal("Out of memory.");
- }
MSDN has no vnsprintf() only _vsnprintf(), what is this? The size=min(...) does not make sense for me either. va_start and va_end could be moved out of the loop by using break instead of return.
+int print_version(FILE *fout) +{
- OSVERSIONINFOEX ver;
- ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
- if (!GetVersionEx ((OSVERSIONINFO *) &ver))
- {
- ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- if (!GetVersionEx ((OSVERSIONINFO *) &ver))
return 0;
This should be made a fatal(), I think.
- }
- fprintf(fout, " dwMajorVersion=%ld\n dwMajorVersion=%ld\n"
The second is dwMinorVersion.
+void deletePath( char *path ) +{
- SHFILEOPSTRUCT fileop;
- path[strlen( path ) + 1] = '\0';
We do not have space allocated for this NUL.
Here we use the advanced Shell API but later not the Win32 API for opening files and such. What is our policy?
+int count_tests()
This is superfluous, not used for anything particularly useful. The progress bar still did not make it...
- if((fout = fopen(test->exename, "wb")))
- {
fwrite(code, size, 1, fout);
fclose(fout);
- }
No error checking whatsoever...
- char line[512], *cmd;
Fixed size buffers are wrong...
- if ((fp = popen( cmd, "r" )))
- {
- while (fgets( line, sizeof(line), fp ))
fprintf( logfp, "%s", line );
- fclose( fp );
- }
Why not a CreateProcess with redirected stderr/stdout?
- if (!(fp = fopen( logfile, "w" ))) fatal("Could not open log file.");
Why not append mode? That would also make the above redirection more secure.
- for(test = wine_tests; test->name; test++)
The number of tests could be determined by sizeof instead of a special member, but I am not sure that would be worth it.
+BINDIR="../.."
[...]
+for test in $TEST_EXES; do
- testname=`basename $test .exe`
- filename="$BINDIR/$test.so"
I am probably too tired, but can not see how you find the test .so-s in the dlls directory...
So I am back, and ready to go for finishing this project...
Feri.