From ebd42dc4fd7dcf78b2d87fdcbfd2f67078f37503 Mon Sep 17 00:00:00 2001 From: Laura Date: Tue, 12 Aug 2025 15:47:54 +0200 Subject: [PATCH] --sniff --- cmd/ffwebp/main.go | 7 ++++++- internal/codec/detect.go | 22 ++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/cmd/ffwebp/main.go b/cmd/ffwebp/main.go index 0b48a17..5fc614b 100644 --- a/cmd/ffwebp/main.go +++ b/cmd/ffwebp/main.go @@ -37,6 +37,11 @@ func main() { Aliases: []string{"c"}, Usage: "force output codec (jpeg, png, ...)", }, + &cli.BoolFlag{ + Name: "sniff", + Aliases: []string{"f"}, + Usage: "force sniffing of input codec (ignore extension)", + }, &cli.IntFlag{ Name: "quality", Aliases: []string{"q"}, @@ -117,7 +122,7 @@ func run(_ context.Context, cmd *cli.Command) error { logx.Printf("reading input from \n") } - sniffed, reader, err := codec.Sniff(reader, input) + sniffed, reader, err := codec.Sniff(reader, input, cmd.Bool("sniff")) if err != nil { return err } diff --git a/internal/codec/detect.go b/internal/codec/detect.go index 3262a9b..291a968 100644 --- a/internal/codec/detect.go +++ b/internal/codec/detect.go @@ -29,16 +29,18 @@ func (s *Sniffed) String() string { return builder.String() } -func Sniff(reader io.Reader, input string) (*Sniffed, io.Reader, error) { - ext := strings.ToLower(strings.TrimPrefix(filepath.Ext(input), ".")) - if ext != "" { - codec, _ := FindCodec(ext) - if codec != nil { - return &Sniffed{ - Header: []byte("." + ext), - Confidence: 100, - Codec: codec, - }, reader, nil +func Sniff(reader io.Reader, input string, ignoreExtension bool) (*Sniffed, io.Reader, error) { + if !ignoreExtension { + ext := strings.ToLower(strings.TrimPrefix(filepath.Ext(input), ".")) + if ext != "" { + codec, _ := FindCodec(ext) + if codec != nil { + return &Sniffed{ + Header: []byte("." + ext), + Confidence: 100, + Codec: codec, + }, reader, nil + } } }