BONES-INFO(1)

πŸ“¦
version 1.5 Β· 4 versions
, in ubuntu noble, ubuntu questing

πŸ’– BONES-INFO(1) πŸ’–

okay bestie, listen up β€” this is a page from the User Contributed Perl Documentation section, and it's literally all about peeking inside Nethack bones files. 🦴✨


✨ NAME ✨

bones-info β€” display information about a Nethack bones file πŸ¦‹


🌸 SYNOPSIS 🌸

bones-info [-a | --auto] [-b | --big-endian] [--debug] [--help] [-x |
--hexadecimal] [-l | --little-endian] [-v | --verbose] [--version]
file...

πŸ’… DESCRIPTION πŸ’…

So bones-info shows you info about a Nethack bones file. That's the whole vibe. 🫢

By default it tells you what byte sex it used to read the file and the 4 version numbers which make up the feature set and platform for the Nethack binary that generated it. No cap, that's it. 😌


πŸ¦‹ ENDIANNESS (aka BYTE SEX) πŸ¦‹

Okay so normally, bones-info reads the bones file in little endian order, regardless of the byte sex of the current system. Why? Because it was originally written to help diagnose problems with hearse, and that's just the most useful behavior for that purpose. Periodt. πŸ’β€β™€οΈ

You can use the --auto, --big-endian, and --little-endian switches to change this. ✨

--auto is particularly useful (and appropriate) when using --verbose. πŸ‘‘

πŸŽ€ OPTIONS πŸŽ€

  • -a, --auto β€” Try to guess the right byte sex (little endian or big endian) for each input file. And if there doesn't seem to be a right choice? bones-info will output a warning, set a non-zero exit status, and move on to the next file. πŸ’€ It's giving "we tried, bestie."
  • -b, --big-endian β€” Read the bones files in big endian order, like the kind Macs use. See also --auto. πŸ“
  • --debug β€” Turn debugging on. πŸ”
  • --help β€” Show the usage message and die. dramatic much? πŸ’€
  • -x, --hexadecimal β€” Output numbers in hexadecimal form. πŸ”’
  • -l, --little-endian β€” Read the bones files in little endian order, such as is used by Intel hardware. This is the default, and the author includes it so that you don't have to go check what the default is if you already know you want it a certain way. thoughtful king πŸ‘‘βœ¨
  • -v, --verbose β€” Output more info about the bones file. It tries to decode the 4 version numbers. Super useful when you want to see what the differences are between two sets of version numbers. You'd normally want to use --auto when you use --verbose. 🧚
  • --version β€” Show the version number and exit. 🌈

⭐ EXAMPLES ⭐

Output the values as used by the hearse server:

$ bones-info *
bonD0.0     sex=l v1=1        v2=2          v3=3          v4=4
bonD0.4.gz  sex=l v1=50593792 v2=10357958   v3=555422078  v4=2759955912
bonD0.8.Z   sex=l v1=1027     v2=3322682880 v3=2115050273 v4=3365241252
bonD0.19    sex=l v1=50528512 v2=10357830   v3=555409789  v4=2558629316
bonM0.1     sex=l v1=50593792 v2=404622406  v3=555417981  v4=2759955916
bonM0.T     sex=l v1=50593792 v2=1969222    v3=555417981  v4=2759955912

Output the real values as seen on the system which wrote the file (by guessing the byte sex of the file):

$ bones-info --auto *
bones-info: can't intuit byte sex of bonD0.0
bonD0.4.gz  sex=l v1=50593792 v2=10357958   v3=555422078  v4=2759955912
bonD0.8.Z   sex=b v1=50593792 v2=1969350    v3=555422078  v4=2759955912
bonD0.19    sex=l v1=50528512 v2=10357830   v3=555409789  v4=2558629316
bonM0.1     sex=l v1=50593792 v2=404622406  v3=555417981  v4=2759955916
bonM0.T     sex=l v1=50593792 v2=1969222    v3=555417981  v4=2759955912
zsh: exit 1     bones-info --auto *

Decode the version numbers:

$ bones-info --auto --verbose bonD0.4.gz bonD0.8.Z
bonD0.4.gz: 18389 bytes
       read as: little endian
   incarnation: 50593792   (3.4.0.0)
   feature_set: 10357958   (REINCARNATION SINKS KOPS MAIL TOURIST STEED
                            TEXTCOLOR INSURANCE ELBERETH EXP_ON_BOTL
                            TIMED_DELAY)
  entity_count: 555422078  (33 artifacts, 433 objects, 382 monsters)
  struct_sizes: 2759955912 (164 flag, 64 obj, 101 monst, 456 you)

bonD0.8.Z: 22296 bytes
       read as: big endian
   incarnation: 50593792   (3.4.0.0)
   feature_set: 1969350    (REINCARNATION SINKS KOPS MAIL TOURIST STEED
                            TEXTCOLOR INSURANCE ELBERETH EXP_ON_BOTL)
  entity_count: 555422078  (33 artifacts, 433 objects, 382 monsters)
  struct_sizes: 2759955912 (164 flag, 64 obj, 101 monst, 456 you)

$ _

😭 BUGS 😭

  • Unsigned longs are assumed to be 4 bytes. ngl, that's just how it is.
  • The --auto byte sex detection isn't robust. 🫠
  • It'd be nice to be provide --verbose output for bones files from older versions. (yes, that's the original's wording, we're keeping it fr fr πŸ₯²)

πŸ’œ AVAILABILITY πŸ’œ

This program is distributed with the Unix Hearse client. The code is licensed under the GNU GPL. 🫢

Check http://www.argon.org/~roderick/hearse/ for updated versions. ✨


πŸ‘‘ AUTHOR πŸ‘‘

Roderick Schertler <roderick@argon.org> β€” the icon who wrote all this πŸ’–


and that's a wrap bestie!! this page came from perl v5.36.0, dated 2022-10-13, and it's filed under BONES-INFO(1) πŸ’…βœ¨ slay responsibly, and remember: always check your byte sex πŸ¦‹

πŸ“¦ where this page comes from