From patchwork Wed Nov 8 08:03:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Plowman X-Patchwork-Id: 44576 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:f392:b0:181:818d:5e7f with SMTP id qr18csp505275pzb; Wed, 8 Nov 2023 09:06:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IEMfW+2e/uAx3ehUSFjTkuS31NQuKqh+J+SXyybSbVxqDgOM5hreRUIZMP7sas7em60+XmL X-Received: by 2002:a17:906:db08:b0:9ae:701a:6efa with SMTP id xj8-20020a170906db0800b009ae701a6efamr1778627ejb.69.1699463206003; Wed, 08 Nov 2023 09:06:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699463205; cv=none; d=google.com; s=arc-20160816; b=I8r1A2+6hFBzf7LvODrIG+ogENfpxRz8W7Qr2+1MAH4TJRlic3WOyb0zphk/YJtS3V G9mYZzgkypsPnEpfah1VVD9gQQIQxkwUi9Jbk9acUFu7f8b6rUyQVu10igF8mzLUwBXZ F9AieFd/Waocl+e2EkRETt8UkwIWdtidjTgGxeno0JwjuUishgUAQXM70DIzItOPUexT eWzwmIhUVPZiOiEsWTHIO8Jkp6M8FUfXzWr/9bFYgAUNhQMgDdQ/gAlhrVzAtXeBSbZI Rp1W97J4kZ1LAbzDV4z7K8FrqGIwuRHv2wTbilpqQegNbgik//EGs1kUYctX3vdMVNVU uCEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :in-reply-to:references:from:content-language:user-agent :mime-version:date:message-id:dkim-signature:delivered-to; bh=7X9YTModk5klcSOfChvXfQ+k8wjM7mGrdm4i+qzH7ik=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=A15gtuxFXhCzyIHx0ehsqbToY5UPiBy2mHiSch2wj9cuecMXjNJ7qxPZj+Tv6HMjyu 1dTrn8/d+G6e62bLMic/WkqIrAEMDtVY4IrSDM0d9eQMPGdFaZZDwcjhwBOdRPQRML/o O7e4L+0StQUg9puMhCJ73VTVVAGWwcG8nyKJw2j07ctUs84mRR7J+f02RPGX1p/hN/KK EhJlayTazHqvqfoDwSVq3Q/ySalaPiLH/csGgqW2rsoaqOAw5d+K2OIvL+SSZU5UO6Al CPh6ZC8UGwUHWwUoMFi7IgtU6VczOcqElZj/aIPc0iczPTBx9E8MWJKYULXur3bryRX0 +HIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@frankplowman.com header.s=s1 header.b=OUw5ZkWC; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=frankplowman.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id lx16-20020a170906af1000b009dd4b4c4ea0si2313176ejb.884.2023.11.08.09.06.45; Wed, 08 Nov 2023 09:06:45 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@frankplowman.com header.s=s1 header.b=OUw5ZkWC; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=frankplowman.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F078568CB3A; Wed, 8 Nov 2023 19:06:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from s.wfbtzhsw.outbound-mail.sendgrid.net (s.wfbtzhsw.outbound-mail.sendgrid.net [159.183.224.105]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 43BEB68CB17 for ; Wed, 8 Nov 2023 19:06:34 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=frankplowman.com; h=content-type:mime-version:subject:from:references:in-reply-to: reply-to:to:cc:content-type:from:subject:to; s=s1; bh=VNrepkw17/da/ZA9Au1rNOY/X5i2YrMaexs4X6s/zWc=; b=OUw5ZkWCKQEvuDyZlCEIpomi6KnBGt9azysIgaFZvAAFZXebUUhjQIP8+bAz7k5UASeg fGLh7wPuLac8FNOqm6O9wlc2wQYtl7QnUG+RLgHkyOhOFQGhAYw+JzI5lwrSw2rU4d3+qJ roacvIYr3hmAvWragmZGp+tecMZcWm3R/lZalMa5+BsuA+sjnEw8kYuewanVUFFvIhea8P kmKSBlm7LVY8tZETjZdZpfQh9lQU97hGYCFiZYJv6bDR4dp0t42UUrO7uupYHn9yyVs+DK mIxBstPH7CT255TI104S4qO2RSS8S9a91THtKKFzBynnoZNU2c86RHUjJRCGoCQg== Received: by filterdrecv-6b68c9f446-c47p6 with SMTP id filterdrecv-6b68c9f446-c47p6-1-654B40D1-3 2023-11-08 08:03:29.152613306 +0000 UTC m=+1862558.110262395 Received: from [10.0.0.6] (unknown) by geopod-ismtpd-4 (SG) with ESMTP id n5EbvdgaQ3KcocKcQBmYZA for ; Wed, 08 Nov 2023 08:03:28.536 +0000 (UTC) Message-ID: <29047aff-ce07-4ca6-92e3-8fda2a371a40@frankplowman.com> Date: Wed, 08 Nov 2023 08:03:29 +0000 (UTC) MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-GB From: Frank Plowman References: In-Reply-To: X-SG-EID: Uj3aYg52c+LLQjRSx2kNrre9PZxeM4UYymiuV7D/DFCrUPtmdddVVDUZk3miaVh1/JO1FFHK2V1NQv9+VwRIHM8b8x1m+UxLkVEiqc+6GGxPdr05Uk9a62RPSsRLhWRACoPoV6sp0AykWThJ6pZSvXWZOrG92MjE3+mIi9WDiTwWeQ52HKYh4hMUOG/+xtmbtTQxjSzli82M39SC4TRBx1U5XKAJNlQsZr6fcvwv9t24K4SbBPGTWpOSrcjXE1fz To: ffmpeg-devel@ffmpeg.org X-Entity-ID: LpPALsXh5JN/Quf2dstifQ== X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH v3] doc/html: Support texinfo 7.0 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 7dvT2kpZJG9u Patches attached. diff --git a/doc/t2h.pm b/doc/t2h.pm index d07d974286..b7485e1f1e 100644 --- a/doc/t2h.pm +++ b/doc/t2h.pm @@ -20,8 +20,45 @@ # License along with FFmpeg; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# Texinfo 7.0 changed the syntax of various functions. +# Provide a shim for older versions. +sub ff_set_from_init_file($$) { + my $key = shift; + my $value = shift; + if (exists &{'texinfo_set_from_init_file'}) { + texinfo_set_from_init_file($key, $value); + } else { + set_from_init_file($key, $value); + } +} + +sub ff_get_conf($) { + my $key = shift; + if (exists &{'texinfo_get_conf'}) { + texinfo_get_conf($key); + } else { + get_conf($key); + } +} + +sub get_formatting_function($$) { + my $obj = shift; + my $func = shift; + + my $sub = $obj->can('formatting_function'); + if ($sub) { + return $obj->formatting_function($func); + } else { + return $obj->{$func}; + } +} + +# determine texinfo version +my $program_version_num = version->declare(ff_get_conf('PACKAGE_VERSION'))->numify; +my $program_version_6_8 = $program_version_num >= 6.008000; + # no navigation elements -set_from_init_file('HEADERS', 0); +ff_set_from_init_file('HEADERS', 0); sub ffmpeg_heading_command($$$$$) { @@ -55,7 +92,7 @@ sub ffmpeg_heading_command($$$$$) $element = $command->{'parent'}; } if ($element) { - $result .= &{$self->{'format_element_header'}}($self, $cmdname, + $result .= &{get_formatting_function($self, 'format_element_header')}($self, $cmdname, $command, $element); } @@ -112,7 +149,11 @@ sub ffmpeg_heading_command($$$$$) $cmdname = $Texinfo::Common::level_to_structuring_command{$cmdname}->[$heading_level]; } - $result .= &{$self->{'format_heading_text'}}( + # format_heading_text expects an array of headings for texinfo >= 7.0 + if ($program_version_num >= 7.000000) { + $heading = [$heading]; + } + $result .= &{get_formatting_function($self,'format_heading_text')}( $self, $cmdname, $heading, $heading_level + $self->get_conf('CHAPTER_HEADER_LEVEL') - 1, $command); @@ -126,23 +167,19 @@ foreach my $command (keys(%Texinfo::Common::sectioning_commands), 'node') { texinfo_register_command_formatting($command, \&ffmpeg_heading_command); } -# determine if texinfo is at least version 6.8 -my $program_version_num = version->declare(get_conf('PACKAGE_VERSION'))->numify; -my $program_version_6_8 = $program_version_num >= 6.008000; - # print the TOC where @contents is used if ($program_version_6_8) { - set_from_init_file('CONTENTS_OUTPUT_LOCATION', 'inline'); + ff_set_from_init_file('CONTENTS_OUTPUT_LOCATION', 'inline'); } else { - set_from_init_file('INLINE_CONTENTS', 1); + ff_set_from_init_file('INLINE_CONTENTS', 1); } # make chapters

-set_from_init_file('CHAPTER_HEADER_LEVEL', 2); +ff_set_from_init_file('CHAPTER_HEADER_LEVEL', 2); # Do not add
-set_from_init_file('DEFAULT_RULE', ''); -set_from_init_file('BIG_RULE', ''); +ff_set_from_init_file('DEFAULT_RULE', ''); +ff_set_from_init_file('BIG_RULE', ''); # Customized file beginning sub ffmpeg_begin_file($$$) @@ -159,7 +196,18 @@ sub ffmpeg_begin_file($$$) my ($title, $description, $encoding, $date, $css_lines, $doctype, $bodytext, $copying_comment, $after_body_open, $extra_head, $program_and_version, $program_homepage, - $program, $generator) = $self->_file_header_informations($command); + $program, $generator); + if ($program_version_num >= 7.000000) { + ($title, $description, $encoding, $date, $css_lines, + $doctype, $bodytext, $copying_comment, $after_body_open, + $extra_head, $program_and_version, $program_homepage, + $program, $generator) = $self->_file_header_information($command); + } else { + ($title, $description, $encoding, $date, $css_lines, + $doctype, $bodytext, $copying_comment, $after_body_open, + $extra_head, $program_and_version, $program_homepage, + $program, $generator) = $self->_file_header_informations($command); + } my $links = $self->_get_links ($filename, $element); @@ -223,7 +271,7 @@ if ($program_version_6_8) { sub ffmpeg_end_file($) { my $self = shift; - my $program_string = &{$self->{'format_program_string'}}($self); + my $program_string = &{get_formatting_function($self,'format_program_string')}($self); my $program_text = < $program_string @@ -244,7 +292,7 @@ if ($program_version_6_8) { # Dummy title command # Ignore title. Title is handled through ffmpeg_begin_file(). -set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1); +ff_set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1); sub ffmpeg_title($$$$) { return ''; @@ -262,8 +310,14 @@ sub ffmpeg_float($$$$$) my $args = shift; my $content = shift; - my ($caption, $prepended) = Texinfo::Common::float_name_caption($self, - $command); + my ($caption, $prepended); + if ($program_version_num >= 7.000000) { + ($caption, $prepended) = Texinfo::Convert::Converter::float_name_caption($self, + $command); + } else { + ($caption, $prepended) = Texinfo::Common::float_name_caption($self, + $command); + } my $caption_text = ''; my $prepended_text; my $prepended_save = ''; @@ -335,8 +389,13 @@ sub ffmpeg_float($$$$$) $caption->{'args'}->[0], 'float caption'); } if ($prepended_text.$caption_text ne '') { - $prepended_text = $self->_attribute_class('div','float-caption'). '>' - . $prepended_text; + if ($program_version_num >= 7.000000) { + $prepended_text = $self->html_attribute_class('div',['float-caption']). '>' + . $prepended_text; + } else { + $prepended_text = $self->_attribute_class('div','float-caption'). '>' + . $prepended_text; + } $caption_text .= ''; } my $html_class = ''; @@ -349,8 +408,13 @@ sub ffmpeg_float($$$$$) $prepended_text = ''; $caption_text = ''; } - return $self->_attribute_class('div', $html_class). '>' . "\n" . - $prepended_text . $caption_text . $content . ''; + if ($program_version_num >= 7.000000) { + return $self->html_attribute_class('div', [$html_class]). '>' . "\n" . + $prepended_text . $caption_text . $content . ''; + } else { + return $self->_attribute_class('div', $html_class). '>' . "\n" . + $prepended_text . $caption_text . $content . ''; + } } texinfo_register_command_formatting('float',