Code Monkey home page Code Monkey logo

Comments (5)

seirl avatar seirl commented on July 23, 2024 1

So, I think the way nftw is currently used is slightly incorrect.

Basically, nftw by default continues if the function given in parameter returns 0, and stops if it returns a non-zero value. This behavior can be changed with a glibc-specific flag, FTW_ACTIONRETVAL, which means instead of returning 0 or non-zero, you return FTW_CONTINUE, FTW_STOP or some other values.

In isolate, FTW_CONTINUE is used although FTW_ACTIONRETVAL isn't given as a flag. It just happens to work because FTW_CONTINUE is defined as 0, but it's an incorrect use of the GNU extension.

Since we don't use the capabilities offered by FTW_ACTIONRETVAL, I think the fix here is just:

diff --git a/util.c b/util.c
index 9f4cd70..07180ac 100644
--- a/util.c
+++ b/util.c
@@ -83,7 +83,7 @@ static int rmtree_helper(const char *fpath, const struct stat *sb,
       if (unlink(fpath) < 0)
        die("Cannot unlink %s: %m", fpath);
     }
-  return FTW_CONTINUE;
+  return 0;
 }
 
 void
@@ -101,7 +101,7 @@ static int chowntree_helper(const char *fpath, const struct stat *sb UNUSED,
   if (lchown(fpath, chown_uid, chown_gid) < 0)
     die("Cannot chown %s: %m", fpath);
   else
-    return FTW_CONTINUE;
+    return 0;
 }
 
 void

This fixes the bug and gets rid of the glibc-specific behavior, so also fixes your issue.

from isolate.

seirl avatar seirl commented on July 23, 2024 1

No worries. If you want to credit me in your commit, you can do git commit --amend, add a line containing Co-authored-by: and then push -f on your branch.

from isolate.

chongkong avatar chongkong commented on July 23, 2024 1

Wow, I didn't know you can add multiple authors for a commit. Check this

from isolate.

chongkong avatar chongkong commented on July 23, 2024

Thanks for your explanation! It seems you haven't created pr for this, so I made #49. If you mind me creating pr for your suggestion you can always create your own and I'll close mine.

from isolate.

gollux avatar gollux commented on July 23, 2024

Yes, you are right, it should not have been FTW_CONTINUE. Thanks, fixed.

from isolate.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.