Add --brief and --dereference to file(1)

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Add --brief and --dereference to file(1)

Ralf Horstmann-2
Hi,

xdg-open uses "xdg-mime query filetype" to find out the mime type of a given
file. Depending on the desktop environment, xdg-mime uses different backends.
In my case (i3 wm) it falls back to the generic code path, which uses

    file --brief --dereference --mime-type

Since --brief and --dereference are not recognized, xdg-mime returns an empty
mime type and causes xdg-open to open the given file with a browser instead of
using the preferred application.

The following patch adds --brief and --dereference to file(1) to address this.

Regards,
Ralf

Index: usr.bin/file/file.1
===================================================================
RCS file: /usr/cvs/openbsd/src/usr.bin/file/file.1,v
retrieving revision 1.43
diff -u -u -r1.43 file.1
--- usr.bin/file/file.1 30 Jul 2015 11:13:24 -0000 1.43
+++ usr.bin/file/file.1 20 Dec 2015 11:13:37 -0000
@@ -83,7 +83,7 @@
 .Pp
 The options are as follows:
 .Bl -tag -width indent
-.It Fl b
+.It Fl b , -brief
 Does not prepend filenames to output lines.
 .It Fl c
 Prints a summary of the parsed magic file; usually used for debugging.
@@ -97,7 +97,7 @@
 .Dq text/plain
 rather than
 .Dq ASCII text .
-.It Fl L
+.It Fl L , -dereference
 Causes symlinks to be followed.
 .It Fl s
 Attempts to read block and character device files, not just regular files.
Index: usr.bin/file/file.c
===================================================================
RCS file: /usr/cvs/openbsd/src/usr.bin/file/file.c,v
retrieving revision 1.56
diff -u -u -r1.56 file.c
--- usr.bin/file/file.c 5 Dec 2015 13:18:09 -0000 1.56
+++ usr.bin/file/file.c 20 Dec 2015 10:50:21 -0000
@@ -102,9 +102,11 @@
 static FILE *magicfp;
 
 static struct option longopts[] = {
- { "mime",      no_argument, NULL, 'i' },
- { "mime-type", no_argument, NULL, 'i' },
- { NULL,        0,           NULL, 0   }
+ { "brief",       no_argument, NULL, 'b' },
+ { "dereference", no_argument, NULL, 'L' },
+ { "mime",        no_argument, NULL, 'i' },
+ { "mime-type",   no_argument, NULL, 'i' },
+ { NULL,          0,           NULL, 0   }
 };
 
 __dead void

Reply | Threaded
Open this post in threaded view
|

Re: Add --brief and --dereference to file(1)

Jeremie Courreges-Anglas-2
Ralf Horstmann <[hidden email]> writes:

> Hi,

Hi,

> xdg-open uses "xdg-mime query filetype" to find out the mime type of a given
> file. Depending on the desktop environment, xdg-mime uses different backends.
> In my case (i3 wm) it falls back to the generic code path, which uses
>
>     file --brief --dereference --mime-type
>
> Since --brief and --dereference are not recognized, xdg-mime returns an empty
> mime type and causes xdg-open to open the given file with a browser instead of
> using the preferred application.

That explains a few things...

> The following patch adds --brief and --dereference to file(1) to address this.

Your patch looks correct and indeed fixes xdg-open here.

Nicholas, objections/ok?

> Regards,
> Ralf
>
> Index: usr.bin/file/file.1
> ===================================================================
> RCS file: /usr/cvs/openbsd/src/usr.bin/file/file.1,v
> retrieving revision 1.43
> diff -u -u -r1.43 file.1
> --- usr.bin/file/file.1 30 Jul 2015 11:13:24 -0000 1.43
> +++ usr.bin/file/file.1 20 Dec 2015 11:13:37 -0000
> @@ -83,7 +83,7 @@
>  .Pp
>  The options are as follows:
>  .Bl -tag -width indent
> -.It Fl b
> +.It Fl b , -brief
>  Does not prepend filenames to output lines.
>  .It Fl c
>  Prints a summary of the parsed magic file; usually used for debugging.
> @@ -97,7 +97,7 @@
>  .Dq text/plain
>  rather than
>  .Dq ASCII text .
> -.It Fl L
> +.It Fl L , -dereference
>  Causes symlinks to be followed.
>  .It Fl s
>  Attempts to read block and character device files, not just regular files.
> Index: usr.bin/file/file.c
> ===================================================================
> RCS file: /usr/cvs/openbsd/src/usr.bin/file/file.c,v
> retrieving revision 1.56
> diff -u -u -r1.56 file.c
> --- usr.bin/file/file.c 5 Dec 2015 13:18:09 -0000 1.56
> +++ usr.bin/file/file.c 20 Dec 2015 10:50:21 -0000
> @@ -102,9 +102,11 @@
>  static FILE *magicfp;
>  
>  static struct option longopts[] = {
> - { "mime",      no_argument, NULL, 'i' },
> - { "mime-type", no_argument, NULL, 'i' },
> - { NULL,        0,           NULL, 0   }
> + { "brief",       no_argument, NULL, 'b' },
> + { "dereference", no_argument, NULL, 'L' },
> + { "mime",        no_argument, NULL, 'i' },
> + { "mime-type",   no_argument, NULL, 'i' },
> + { NULL,          0,           NULL, 0   }
>  };
>  
>  __dead void
>

--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply | Threaded
Open this post in threaded view
|

Re: Add --brief and --dereference to file(1)

Jeremie Courreges-Anglas-2
In reply to this post by Ralf Horstmann-2
Ralf Horstmann <[hidden email]> writes:

> Hi,
>
> xdg-open uses "xdg-mime query filetype" to find out the mime type of a given
> file. Depending on the desktop environment, xdg-mime uses different backends.
> In my case (i3 wm) it falls back to the generic code path, which uses
>
>     file --brief --dereference --mime-type
>
> Since --brief and --dereference are not recognized, xdg-mime returns an empty
> mime type and causes xdg-open to open the given file with a browser instead of
> using the preferred application.
>
> The following patch adds --brief and --dereference to file(1) to address this.

Committed, thanks.

--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE