On Mon, Jul 03, 2017 at 05:36:52PM +0100, Nicholas Marriott wrote:
> Hi
> 
> On Thu, Jun 29, 2017 at 09:29:57PM +0200, Klemens Nanni wrote:
> > While reading file(1)'s code in #openbsd-daily mulander noted that the
> > 'name' and 'use' types were missing from magic(5).
> > 
> > I'm not entirely sure yet whether this is complete, so here's what I
> > did:
> > 
> > magic(5) provided by devel/magic documents version 5.31 while base's
> > magic(5) is at 4.24. Here are the types found in 5.31 but not ours as
> > well as those of the missing ones that are actually implemented but
> > undocumented as of now:
> > 
> >     $ grep -i "TYPE_($(grep -F 'It Dv' $(man -w magic) |
> >             cut -d' ' -f3 | sort | uniq -u | paste -sd\| - |
> >             tee /dev/stderr))" magic.h
> >     beid3|beqwdate|clear|indirect|leid3|leqwdate|name|qwdate|use
> >             MAGIC_TYPE_CLEAR,
> >             MAGIC_TYPE_NAME,
> >             MAGIC_TYPE_USE,
> > 
> > What about the current version being 4.21? We're clearly ahead of this,
> > it seems magic(5) wasn't updated when nicm@ reimplemented things.
> > 
> > This patch documents the respective types.
> 
> Did you copy this text from upstream or write it?
> 
> Some comments inline.
> 
> > Feedback/OK?
> > 
> > Index: magic.5
> > ===================================================================
> > RCS file: /cvs/src/usr.bin/file/magic.5,v
> > retrieving revision 1.17
> > diff -u -p -r1.17 magic.5
> > --- magic.5 24 Apr 2016 07:02:07 -0000      1.17
> > +++ magic.5 29 Jun 2017 17:41:56 -0000
> > @@ -218,6 +218,31 @@ This is intended to be used with the tes
> > .Em x
> > (which is always true) and a message that is to be used if there are
> > no other matches.
> > +.It Dv clear
> > +This test is always true and clears the match flag for that continuation
> > +level.
> 
> I would just say "that level" or "the test's level" not "that
> continuation level" because there is no previous mention of
> "continuation".
> 
> > +It is intended to be used with the default test.
> > +.It Dv name
> > +Define a
> > +.Dq named
> 
> I don't think quotation marks are necessary here.
> 
> > +magic instance that can be called from another
> > +.Dv use
> > +magic entry, like a subroutine call.
> > +Named instance direct magic offsets are relative to the offset of the
> > +previous matched entry, but indirect offsets are relative to the
> > +beginning of the file as usual.
> > +Named magic entries always match.
> > +.It Dv use
> > +Recursively call the named magic starting from the current offset.
> > +If the name of the referenced begins with a
> 
> "the referenced instance" would be better than "the referenced".
Here's an updated diff incorporating your suggestions.

I didn't touch the manual's first sentence mentioning file(1)'s version
since nicm@ reimplemented file(1) with revision 1.11 on 2015/04/24. He
or someone else more knowledgable in this regard might want to bump it
accordingly.

Feedback? Comments?

Index: magic.5
===================================================================
RCS file: /cvs/src/usr.bin/file/magic.5,v
retrieving revision 1.17
diff -u -p -r1.17 magic.5
--- magic.5     24 Apr 2016 07:02:07 -0000      1.17
+++ magic.5     25 Jul 2017 18:56:40 -0000
@@ -30,7 +30,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: April 24 2016 $
+.Dd $Mdocdate: July 25 2017 $
 .Dt MAGIC 5
 .Os
 .\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
@@ -218,6 +218,28 @@ This is intended to be used with the tes
 .Em x
 (which is always true) and a message that is to be used if there are
 no other matches.
+.It Dv clear
+This test is always true and clears the match flag for that level.
+It is intended to be used with the default test.
+.It Dv name
+Define a named magic instance that can be called from another
+.Dv use
+magic entry, like a subroutine call.
+Named instance direct magic offsets are relative to the offset of the
+previous matched entry, but indirect offsets are relative to the
+beginning of the file as usual.
+Named magic entries always match.
+.It Dv use
+Recursively call the named magic starting from the current offset.
+If the name of the referenced instance begins with a
+.Dv ^
+then the endianness of the magic is switched; if the magic mentioned
+.Dv leshort
+for example,
+it is treated as
+.Dv beshort
+and vice versa.
+This is useful to avoid duplicating the rules for different endianness.
 .El
 .Pp
 Each top-level magic pattern (see below for an explanation of levels)

Reply via email to