Giter Club home page Giter Club logo

Comments (10)

josephholsten avatar josephholsten commented on July 16, 2024 1

ah, well that use case convinces me. I'd usually this pattern for that use case, but that's obnoxious for one-offs.

ok, I'll look into implementing this.

from flock.

josephholsten avatar josephholsten commented on July 16, 2024

Great, I'll see how they're executing. I was a little afraid of entering n levels of encoding hell, so I just pass arguments along to execvp, see https://github.com/discoteq/flock/blob/master/src/flock.c#L304

I'm not sure I agree that linux-utils behaviour is what is most reasonable, but compatibility trumps sanity, right?

from flock.

josephholsten avatar josephholsten commented on July 16, 2024

Ah, they're being "smart" and passing along to a subshell: https://github.com/karelzak/util-linux/blob/master/sys-utils/flock.c#L239

Can you find one other person to agree this is the appropriate behaviour? I'm torn.

from flock.

josephholsten avatar josephholsten commented on July 16, 2024

Looks like it was added back in util-linux/util-linux@baf39af#diff-1219b3b65dcec8078370f245769671b1R193

And the only explanation in its NEWS is:

  • flock: replaced with flock-2.0.2 by H. Peter Anvin

from flock.

josephholsten avatar josephholsten commented on July 16, 2024

maybe if it's a single string, pass to a subshell; if it's multiple, exec directly? I feel like something has similar behaviour but I can't remember what.

from flock.

marcomorain avatar marcomorain commented on July 16, 2024

Hi @josephholsten

Thanks for looking into this.

I think the -c option is to allow the caller have some symbols that would otherwise be interpreted by the shell.

flock -x file.lock cat id_rsa.pub >> authorized_keys

vs

flock -x file.lock -c 'cat id_rsa.pub >> authorized_keys'

In the first case above, the output of flock is appended to authorized_keys, outside of the lock; in the second case, the contents of id_rsa.pub are appended to authorized_keys inside the lock.

from flock.

wbaelen avatar wbaelen commented on July 16, 2024

+1

from flock.

josephholsten avatar josephholsten commented on July 16, 2024

so sorry, I dropped this right on the floor. I know I can't get to this till at least this evening, so here are my notes:

At the moment, -c is just grabbing the command from getopt_long():

cmd_argv = &argv[optind + 1];

and tossing it straight into execvp()

			if (0 != execvp(cmd_argv[0], cmd_argv)) {

so I really just want to build a new cmd_argv with cmd_argv[0] = getenv("SHELL") || "/bin/sh", cmd_argv[1] = "-c", then push the rest in.

Needs doc, especially to say that you can SHELL=/bin/wtfsh to specify your own.

from flock.

hongkongkiwi avatar hongkongkiwi commented on July 16, 2024

Yes, please implement this, it prevents it from being a 'drop in replacement' with some scripts i have :(

from flock.

josephholsten avatar josephholsten commented on July 16, 2024

If this is interesting to you, please review the implementation in #23

from flock.

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.