Re: GNU's /bin/true

"Michael Tewner" <[email protected]> Sun, 24 Feb 2008 02:59:30 -0500
Newsgroups gmane.culture.hackers.israel
Message-ID <[email protected]>
Well - according to
http://www.koders.com/c/fidDF83F838AA5D91F9B07D35DD6353BCA20BD2B48B.aspx

/bin/true and /bin/false are the same program:

/* Act like "true" by default; false.c overrides this.  */
#ifndef EXIT_STATUS
# define EXIT_STATUS EXIT_SUCCESS
#endif

#if EXIT_STATUS == EXIT_SUCCESS
# define PROGRAM_NAME "true"
#else
# define PROGRAM_NAME "false"
#endif


False.c is simply:
#define EXIT_STATUS EXIT_FAILURE
#include "true.c"


sure enough, they have the same size
-rwxr-xr-x 1 root root 15736 2007-03-05 08:13 false
-rwxr-xr-x 1 root root 15736 2007-03-05 08:13 true

... though they have a decent binary diff - due to 1-byte shifts on
some segments - "true" being one character less than false.

On Sat, Feb 23, 2008 at 3:51 AM, Shlomi Fish <shlomif-ik1l9ssToec+JF/[email protected]> wrote:
> Hi all.
>
>  Inspired by the bit about the Solaris true here:
>
>  http://thedailywtf.com/Articles/The-Comcast-Bill,-A-Buggy-Traffic-Light,-and-More.aspx
>
>  I decided to see how my GNU/Linux's /bin/true is all about. "less /bin/true"
>  indicated it was a binary executable and had many symbols to show for
>  (including many printf-formats). And:
>
>  <<<<
>  $ ls -l /bin/true
>  -rwxr-xr-x 1 root root 23468 2008-01-29 13:21 /bin/true
>  >>>>
>
>  I wondered why it should be so large, given all it had to do was "return 0;",
>  and so I did "man true":
>
>  <<<<<<<<<<<<<<
>  NAME
>        true - do nothing, successfully
>
>  SYNOPSIS
>        true [ignored command line arguments]
>        true OPTION
>
>  DESCRIPTION
>        Exit with a status code indicating success.
>
>        --help display this help and exit
>
>        --version
>               output version information and exit
>
>        NOTE: your shell may have its own version of true, which usually super‐
>        sedes the version described here.  Please refer to your  shell's  docu‐
>        mentation for details about the options it supports.
>  >>>>>>>>>>>>>
>
>  I laughed quite a bit seeing it accepts some command-line arguments.
>
>  Then I tried "true --help" and "true --version" which didn't print anything
>  because they were the shell's built-in true command. So I did the same
>  with "/bin/true --help" and "/bin/true --version":
>
>  <<<<<<<<<<<<<<<<<<<
>  shlomi:~$ /bin/true --help
>  Usage: /bin/true [ignored command line arguments]
>   or:  /bin/true OPTION
>  Exit with a status code indicating success.
>
>       --help     display this help and exit
>       --version  output version information and exit
>
>  NOTE: your shell may have its own version of true, which usually supersedes
>  the version described here.  Please refer to your shell's documentation
>  for details about the options it supports.
>
>  Report bugs to <bug-coreutils-mXXj517/[email protected]>.
>  shlomi:~$ /bin/true --version
>  true (GNU coreutils) 6.10
>  Copyright (C) 2008 Free Software Foundation, Inc.
>  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
>  This is free software: you are free to change and redistribute it.
>  There is NO WARRANTY, to the extent permitted by law.
>
>  Written by Jim Meyering.
>  shlomi:~$
>  >>>>>>>>>>>>>>>>>>>>
>
>  So now I no longer wonder why it is so bloated.
>
>  What would we do without GNU?
>
>  Regards,
>
>         Shlomi Fish
>
>  ---------------------------------------------------------------------
>  Shlomi Fish      shlomif-ik1l9ssToec+JF/[email protected]
>  Homepage:        http://www.shlomifish.org/
>
>  I'm not an actor - I just play one on T.V.
>
>
>
>  Yahoo! Groups Links
>
>
>
>