systemd-detect-fash detects execution in a fascist environment. It identifies the fascist technology and can distinguish full machine fascism from installed fashware. systemd-detect-fash exits with a return value of 0 (success) if a fascism technology is detected, and non-zero (error) otherwise.

  • bobo@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    6 hours ago

    In the real world, when an exit code is a boolean

    Do you have any examples of that scenario? I can’t think of any, and from the top of my head it doesn’t make any sense to mix exit codes with bool returns.

    • rtxn@lemmy.worldM
      link
      fedilink
      arrow-up
      4
      ·
      edit-2
      5 hours ago

      To be pedantic: there is no such thing as a boolean value. It’s all just bytes and larger numbers behind an abstraction that allows a higher-level programming language to implement Boolean algebra by interpreting numbers a certain way. One such abstraction is the POSIX convention of treating a return code of zero as success and everything else as a failure. This consequently defines how Boolean algebra is implemented in POSIX-compliant shells:

      • The if statement tests the return code of the command specified in the header, then executes the then branch if the return code is zero, the else branch otherwise.
      • The while loop similarly tests the command in the head and executes the body if its return code is zero.
      • The boolean && and || operators treat zero return values as true and nonzero return values as false. Go try it out.
      • Even the true and false commands are just programs that immediately return 0 and 1 respectively.

      If you start treating nonzero return codes like a success value with meaning, the only thing you’ll achieve is that your scripts won’t be compatible with the shell. stdout exists. Use it.

    • Sonotsugipaa@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      3
      ·
      6 hours ago

      /usr/bin/true and /usr/bin/false come to mind.

      Then there’s /usr/bin/test, or more commonly known as [.

      How about function fn { return 1; }; fn?
      POSIX-like shells consider that a failure, doing that on Bash with set -e or on Zsh with setopt err_exit will close the shell.

      Should I compile a list of examples with common utility programs like mkdir, or should I investigate whether 0-is-success also applies to PowerShell-run programs on Windows (idk for sure)?

      • bobo@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        5 hours ago

        Thanks, I didn’t know they work like that.

        I was thinking more along the line of the return 1 example.