2

How can I specify how far/deep the 'file' command should search in a file to locate a match on a "search" definition ?

I am trying to create a universal specification in "/etc/magic" for multi-flavoured Prolog, so that I could do mass-transformation of imported predicate libraries for re-targeting to my personal environment for a project.

Having reviewed a number of the "target" files, I believe I would need to search within the first 3K characters of a file for this to be deemed reasonably successful as an approach.

So far I've tried these 2 flavours/definition, with no success:

[1] 0   search/3072 [Pp][Rr][Oo][Ll][Oo][Gg]    Prolog Predicate File (ISO-Compliant Prolog), ASCII text 

and

[2] 0   search  [Pp][Rr][Oo][Ll][Oo][Gg]    Prolog Predicate File (ISO-Compliant Prolog), ASCII text 

This second one is successful but only if the pattern is found in the first line of the file.

Also, I tried the following definitions:

[3] 0       search  :-      Prolog Predicate File (Non-Specific :-)

and

[4] 0      string  %       Prolog Predicate File (Non-Specific %), ASCII text

However, when I enter either of [3] or [4], below the entry for line [2], these seem to override the effectiveness of [2]. Also, for some reason, regardless of order of precedence in the file, [3] seems to "overcome" any instance that, in my view should match up with [4].

This leads me to the question: How to tell the "file" command to exit on the first match encountered in my magic file and report that?

I have also defined this initial set of other specifications to normalize the files which will be massaged to conform:

0   string  %%Prolog    Prolog Predicate File (Non-Specific)
0   string  %%gprolog   Prolog Predicate File (GNU Prolog)
0   string  %%swipl     Prolog Predicate File (SWI-Prolog)
0   string  %%yap       Prolog Predicate File (YAP Prolog)
0   string  %%eclipse   Prolog Predicate File (ECLiPSe)
0   string  %%bprolog   Prolog Predicate File (B-Prolog)
0   string  %%poplog    Prolog Predicate File (Poplog)
0   string  %%lpaprolog Prolog Predicate File (LPA Prolog)
0   string  %%isoprolog Prolog Predicate File (ISO-Compliant Prolog)

I have created this last definition so that I may specifically tag those predicate files which I have confirmed as compliant with ISO Prolog specifications.

I do NOT want to use the "shebang" (i.e. #!/bin/gprolog) notation for first line auto-detection for execution.

[Additional] I just discovered a gotcha. How can I configure the installation to ensure any standard/builtin "shebang" notation is evaluated before my customized /etc/magic entries, but at the same time have my /etc/magic definitions be evaluated before any other magic sequences?

Guidance on search depth specification would be greatly appreciated.

0

You must log in to answer this question.

Browse other questions tagged .