/usr/share/doc/m4-doc/Dnl.html is in m4-doc 1.4.18-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
This manual (31 December 2016) is for GNU M4 (version
1.4.18), a package containing an implementation of the m4 macro
language.
Copyright (C) 1989-1994, 2004-2014, 2016 Free Software
Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts. A copy of the license is included in the section
entitled "GNU Free Documentation License." -->
<!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU M4 1.4.18 macro processor: Dnl</title>
<meta name="description" content="GNU M4 1.4.18 macro processor: Dnl">
<meta name="keywords" content="GNU M4 1.4.18 macro processor: Dnl">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Indices.html#Indices" rel="index" title="Indices">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Input-Control.html#Input-Control" rel="up" title="Input Control">
<link href="Changequote.html#Changequote" rel="next" title="Changequote">
<link href="Input-Control.html#Input-Control" rel="prev" title="Input Control">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<a name="Dnl"></a>
<div class="header">
<p>
Next: <a href="Changequote.html#Changequote" accesskey="n" rel="next">Changequote</a>, Up: <a href="Input-Control.html#Input-Control" accesskey="u" rel="up">Input Control</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html#Indices" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Deleting-whitespace-in-input"></a>
<h3 class="section">8.1 Deleting whitespace in input</h3>
<a name="index-deleting-whitespace-in-input"></a>
<a name="index-discarding-input-1"></a>
<a name="index-input_002c-discarding-1"></a>
<p>The builtin <code>dnl</code> stands for “Discard to Next Line”:
</p>
<dl>
<dt><a name="index-dnl"></a>Builtin: <strong>dnl</strong></dt>
<dd><p>All characters, up to and including the next newline, are discarded
without performing any macro expansion. A warning is issued if the end
of the file is encountered without a newline.
</p>
<p>The expansion of <code>dnl</code> is void.
</p></dd></dl>
<p>It is often used in connection with <code>define</code>, to remove the
newline that follows the call to <code>define</code>. Thus
</p>
<div class="example">
<pre class="example">define(`foo', `Macro `foo'.')dnl A very simple macro, indeed.
foo
⇒Macro foo.
</pre></div>
<p>The input up to and including the next newline is discarded, as opposed
to the way comments are treated (see <a href="Comments.html#Comments">Comments</a>).
</p>
<p>Usually, <code>dnl</code> is immediately followed by an end of line or some
other whitespace. GNU <code>m4</code> will produce a warning diagnostic if
<code>dnl</code> is followed by an open parenthesis. In this case, <code>dnl</code>
will collect and process all arguments, looking for a matching close
parenthesis. All predictable side effects resulting from this
collection will take place. <code>dnl</code> will return no output. The
input following the matching close parenthesis up to and including the
next newline, on whatever line containing it, will still be discarded.
</p>
<div class="example">
<pre class="example">dnl(`args are ignored, but side effects occur',
define(`foo', `like this')) while this text is ignored: undefine(`foo')
error→m4:stdin:1: Warning: excess arguments to builtin `dnl' ignored
See how `foo' was defined, foo?
⇒See how foo was defined, like this?
</pre></div>
<p>If the end of file is encountered without a newline character, a
warning is issued and dnl stops consuming input.
</p>
<div class="example">
<pre class="example">m4wrap(`m4wrap(`2 hi
')0 hi dnl 1 hi')
⇒
define(`hi', `HI')
⇒
^D
error→m4:stdin:1: Warning: end of file treated as newline
⇒0 HI 2 HI
</pre></div>
<hr>
<div class="header">
<p>
Next: <a href="Changequote.html#Changequote" accesskey="n" rel="next">Changequote</a>, Up: <a href="Input-Control.html#Input-Control" accesskey="u" rel="up">Input Control</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html#Indices" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|