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.

  • Kogasa@programming.dev
    link
    fedilink
    arrow-up
    10
    arrow-down
    1
    ·
    7 hours ago

    What you’re saying is irrelevant. In the real world, when an exit code is a boolean, 0 is true.

    • 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.