Add reproducible.patch to sort file list to fix build-compare (boo#1041090) OBS-URL: https://build.opensuse.org/request/show/511588 OBS-URL: https://build.opensuse.org/package/show/games/viruskiller?expand=0&rev=3
76 lines
1.7 KiB
Diff
76 lines
1.7 KiB
Diff
# PATCH-FIX-OPENSUSE
|
|
|
|
(boo#1041090)
|
|
|
|
When building 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
|
|
|
|
Index: viruskiller-1.03/src/pak.cpp
|
|
===================================================================
|
|
--- viruskiller-1.03.orig/src/pak.cpp
|
|
+++ viruskiller-1.03/src/pak.cpp
|
|
@@ -81,7 +81,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;
|
|
@@ -90,9 +92,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;
|
|
@@ -101,10 +103,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;
|
|
}
|
|
|
|
@@ -123,7 +127,6 @@ void recurseDirectory(const char *dirNam
|
|
if (!infile)
|
|
{
|
|
printf("Couldn't open %s for reading!\n", filename);
|
|
- closedir(dirp);
|
|
gzclose(pak);
|
|
exit(1);
|
|
}
|
|
@@ -155,7 +158,6 @@ void recurseDirectory(const char *dirNam
|
|
if (!fp)
|
|
{
|
|
printf("Couldn't open %s for reading!\n", filename);
|
|
- closedir(dirp);
|
|
gzclose(pak);
|
|
exit(1);
|
|
}
|
|
@@ -181,9 +183,10 @@ void recurseDirectory(const char *dirNam
|
|
fflush(stdout);
|
|
}
|
|
}
|
|
+ free(dfile);
|
|
}
|
|
|
|
- closedir(dirp);
|
|
+ free(namelist);
|
|
|
|
dirs++;
|
|
}
|