[SCM] BOINC packaging branch, master, updated. debian/6.10.17+dfsg-3-372-ga2a0fc3

Steffen Moeller moeller at debian.org
Sun Jan 22 12:39:38 UTC 2012


The following commit has been merged in the master branch:
commit f254ac6b548124421139b5397eb252701af1722d
Author: Steffen Moeller <moeller at debian.org>
Date:   Sat Jan 21 22:17:50 2012 +0100

    Adding patch that is not to be applied as reference

diff --git a/debian/patches/erase_while_1.patch b/debian/patches/erase_while_1.patch
new file mode 100644
index 0000000..4f5617d
--- /dev/null
+++ b/debian/patches/erase_while_1.patch
@@ -0,0 +1,117 @@
+Index: boinc/lib/filesys.cpp
+===================================================================
+--- boinc.orig/lib/filesys.cpp	2011-12-02 02:55:55.000000000 +0100
++++ boinc/lib/filesys.cpp	2012-01-15 23:46:23.000000000 +0100
+@@ -168,17 +168,13 @@
+         }
+     }
+ #else
+-    while (1) {
+-        dirent* dp = readdir(dirp);
+-        if (dp) {
+-            if (!strcmp(dp->d_name, ".")) continue;
+-            if (!strcmp(dp->d_name, "..")) continue;
+-            if (p) strlcpy(p, dp->d_name, p_len);
+-            return 0;
+-        } else {
+-            return ERR_READDIR;
+-        }
++    for (dirent* dp = readdir(dirp); dp; dp = readdir(dirp)) {
++        if (!strcmp(dp->d_name, ".")) continue;
++        if (!strcmp(dp->d_name, "..")) continue;
++        strlcpy(p, dp->d_name, p_len);
++        return 0;
+     }
++    return ERR_READDIR;
+ #endif
+ }
+ 
+@@ -253,16 +249,12 @@
+ #else
+     if (!dirp) return false;
+ 
+-    while (1) {
+-        dirent* dp = readdir(dirp);
+-        if (dp) {
+-            if (dp->d_name[0] == '.') continue;
+-            s = dp->d_name;
+-            return true;
+-        } else {
+-            return false;
+-        }
++    for(dirent* dp = readdir(dirp); dp; dp = readdir(dirp)) {
++        if (dp->d_name[0] == '.') continue;
++        s = dp->d_name;
++        return true;
+     }
++    return false;
+ #endif
+ }
+ 
+@@ -354,20 +346,18 @@
+ 
+     dirp = dir_open(dirpath);
+     if (!dirp) return 0;    // if dir doesn't exist, it's empty
+-    while (1) {
+-        strcpy(filename, "");
+-        retval = dir_scan(filename, dirp, sizeof(filename));
+-        if (retval) break;
+-        sprintf(path, "%s/%s", dirpath,  filename);
+-        clean_out_dir(path);
+-        boinc_rmdir(path);
+-        retval = boinc_delete_file(path);
+-        if (retval) {
+-            dir_close(dirp);
+-            return retval;
+-        }
+-    }
++
++    strcpy(filename, "");
++    retval = dir_scan(filename, dirp, sizeof(filename));
+     dir_close(dirp);
++    if (retval) return retval;
++
++    sprintf(path, "%s/%s", dirpath,  filename);
++    clean_out_dir(path); // recursion
++    boinc_rmdir(path);
++    retval = boinc_delete_file(path);
++    if (retval)  return retval;
++
+     return 0;
+ }
+ 
+@@ -540,7 +530,7 @@
+     // ownership or permissions when called from the BOINC Client 
+     // under sandbox security, so we copy the file directly.
+     FILE *src, *dst;
+-    int m, n;
++    size_t m, n;
+     int retval = 0;
+     struct stat sbuf;
+     unsigned char buf[65536];
+@@ -551,17 +541,18 @@
+         fclose(src);
+         return ERR_FOPEN;
+     }
+-    while (1) {
++
++    do {
+         n = fread(buf, 1, sizeof(buf), src);
+-        if (n <= 0) break;
+         m = fwrite(buf, 1, n, dst);
+-        if (m != n) {
+-            retval = ERR_FWRITE;
+-            break;
+-        }
+-    }
++    } while(n>0 && m==n);
++
++    if (!feof(src)) retval = ERR_FREAD;
++    else if (m != n) retval = ERR_FWRITE;
++
+     fclose(src);
+     fclose(dst);
++
+     // Copy file's ownership, permissions to the extent we are allowed
+     lstat(orig, &sbuf);             // Get source file's info
+     chown(newf, sbuf.st_uid, sbuf.st_gid);

-- 
BOINC packaging



More information about the pkg-boinc-commits mailing list