Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
games
blobwars
reproducible.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File reproducible.patch of Package blobwars
https://sourceforge.net/p/blobwars/patches/8/ (boo#1041090) When building blobwars packages for openSUSE, we do so in disposable VMs, which means every build has a new filesystem and thus ordering of files differs for the readdir call in src/pak.cpp See https://reproducible-builds.org for why this matters. Index: blobwars-2.00/src/pak.cpp =================================================================== --- blobwars-2.00.orig/src/pak.cpp +++ blobwars-2.00/src/pak.cpp @@ -76,7 +76,9 @@ void countFiles(const char *dirName) void recurseDirectory(const char *dirName) { - DIR *dirp, *dirp2; + DIR *dirp2; + int n; + struct dirent **namelist; dirent *dfile; gzFile fp; FILE *infile; @@ -85,9 +87,9 @@ void recurseDirectory(const char *dirNam uLongf cSize = 0; uLongf fSize = 0; - dirp = opendir(dirName); + n = scandir(dirName, &namelist, NULL, alphasort); - if (dirp == NULL) + if (n == -1) { printf("%s: Directory does not exist or is not accessable\n", dirName); return; @@ -96,10 +98,12 @@ void recurseDirectory(const char *dirNam float percentage; long filesize; - while ((dfile = readdir(dirp))) + while (n--) { + dfile = namelist[n]; if (dfile->d_name[0] == '.') { + free(dfile); continue; } @@ -118,7 +122,6 @@ void recurseDirectory(const char *dirNam if (!infile) { printf("Couldn't open %s for reading!\n", filename); - closedir(dirp); fclose(pak); exit(1); } @@ -140,7 +143,6 @@ void recurseDirectory(const char *dirNam if (!fp) { printf("Couldn't open %s for reading!\n", filename); - closedir(dirp); fclose(pak); exit(1); } @@ -171,9 +173,10 @@ void recurseDirectory(const char *dirNam fflush(stdout); } } + free(dfile); } - closedir(dirp); + free(namelist); dirs++; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor