Package: cron Version: 3.0pl1-189 Severity: minor * What led up to the situation?
Checking for defects with [test-][g|n]roff -mandoc -t -K utf8 -rF0 -rHY=0 -ww -b -z < "man page" ["test-groff" is a script in the repository for "groff"; is not shipped] (local copy and "troff" slightly changed by me). [The fate of "test-nroff" was decided in groff bug #55941.] * What was the outcome of this action? troff: backtrace: file '<stdin>':65 troff:<stdin>:65: warning: trailing space in the line * What outcome did you expect instead? No output (no warnings). -.- General remarks and further material, if a diff-file exist, are in the attachments. -- System Information: Debian Release: trixie/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 6.11.2-amd64 (SMP w/2 CPU threads; PREEMPT) Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=ISO-8859-1), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: sysvinit (via /sbin/init) Versions of packages cron depends on: ii cron-daemon-common 3.0pl1-189 ii init-system-helpers 1.67 ii libc6 2.40-3 ii libpam-runtime 1.5.3-7 ii libpam0g 1.5.3-7 ii libselinux1 3.7-3 ii sensible-utils 0.0.24 Versions of packages cron recommends: ii exim4-daemon-light [mail-transport-agent] 4.98-1 Versions of packages cron suggests: ii anacron 2.3-40 pn bat <none> pn checksecurity <none> ii logrotate 3.22.0-1 pn supercat <none> Versions of packages cron is related to: pn libnss-ldap <none> pn libnss-ldapd <none> pn libpam-ldap <none> pn libpam-mount <none> pn nis <none> pn nscd <none> -- no debconf information
Any program (person), that produces man pages, should check the output for defects by using (both groff and nroff) [gn]roff -mandoc -t -ww -b -z -K utf8 <man page> The same goes for man pages that are used as an input. For a style guide use mandoc -T lint -.- So any 'generator' should check its products with the above mentioned 'groff', 'mandoc', and additionally with 'nroff ...'. This is just a simple quality control measure. The 'generator' may have to be corrected to get a better man page, the source file may, and any additional file may. Common defects: Input text line longer than 80 bytes. Not removing trailing spaces (in in- and output). The reason for these trailing spaces should be found and eliminated. Not beginning each input sentence on a new line. Lines should thus be shorter. See man-pages(7), item 'semantic newline'. -.- The difference between the formatted outputs can be seen with: nroff -mandoc <file1> > <out1> nroff -mandoc <file2> > <out2> diff -u <out1> <out2> and for groff, using "printf '%s\n%s\n' '.kern 0' '.ss 12 0' | groff -mandoc -Z - " instead of 'nroff -mandoc' Add the option '-t', if the file contains a table. Read the output of 'diff -u' with 'less -R' or similar. -.-. If 'man' (man-db) is used to check the manual for warnings, the following must be set: The option "-warnings=w" The environmental variable: export MAN_KEEP_STDERR=yes (or any non-empty value) or (produce only warnings): export MANROFFOPT="-ww -b -z" export MAN_KEEP_STDERR=yes (or any non-empty value) -.-. Output from "mandoc -T lint cron.8": (possibly shortened list) mandoc: cron.8:38:2: WARNING: skipping paragraph macro: PP after SH mandoc: cron.8:44:2: WARNING: skipping paragraph macro: PP after SH mandoc: cron.8:52:119: STYLE: input text line longer than 80 bytes: Enable LSB compliant... mandoc: cron.8:62:102: STYLE: input text line longer than 80 bytes: Include the FQDN in ... mandoc: cron.8:67:85: STYLE: input text line longer than 80 bytes: Run cron jobs Now, i... mandoc: cron.8:96:158: STYLE: input text line longer than 80 bytes: The default is to lo... mandoc: cron.8:101:101: STYLE: input text line longer than 80 bytes: Tell cron to be more... mandoc: cron.8:145:2: WARNING: skipping paragraph macro: PP after SH mandoc: cron.8:147:104: STYLE: input text line longer than 80 bytes: searches its spool a... mandoc: cron.8:148:130: STYLE: input text line longer than 80 bytes: /etc/passwd); cronta... mandoc: cron.8:162:108: STYLE: input text line longer than 80 bytes: /etc/cron\&.monthly\... mandoc: cron.8:177:141: STYLE: input text line longer than 80 bytes: /etc/crontab: they d... mandoc: cron.8:184:87: STYLE: input text line longer than 80 bytes: directory are monito... mandoc: cron.8:191:115: STYLE: input text line longer than 80 bytes: must be owned by roo... mandoc: cron.8:199:115: STYLE: input text line longer than 80 bytes: may also be symlinks... mandoc: cron.8:212:567: STYLE: input text line longer than 80 bytes: then wakes up every ... mandoc: cron.8:216:85: STYLE: input text line longer than 80 bytes: checks each minute t... mandoc: cron.8:220:89: STYLE: input text line longer than 80 bytes: will then examine th... mandoc: cron.8:224:83: STYLE: input text line longer than 80 bytes: command updates the ... mandoc: cron.8:226:404: STYLE: input text line longer than 80 bytes: Special consideratio... mandoc: cron.8:228:221: STYLE: input text line longer than 80 bytes: Only jobs that run a... mandoc: cron.8:230:121: STYLE: input text line longer than 80 bytes: Clock changes of mor... mandoc: cron.8:233:103: STYLE: input text line longer than 80 bytes: logs its action to t... mandoc: cron.8:237:2: WARNING: skipping paragraph macro: PP after SH mandoc: cron.8:246:264: STYLE: input text line longer than 80 bytes: with values from the... mandoc: cron.8:250:125: STYLE: input text line longer than 80 bytes: affect the environme... mandoc: cron.8:257:122: STYLE: input text line longer than 80 bytes: The environment can ... mandoc: cron.8:259:2: WARNING: skipping paragraph macro: PP after SH mandoc: cron.8:260:130: STYLE: input text line longer than 80 bytes: Debian introduces so... mandoc: cron.8:387:83: STYLE: input text line longer than 80 bytes: providing each one o... mandoc: cron.8:389:86: STYLE: input text line longer than 80 bytes: is installed (except... mandoc: cron.8:391:301: STYLE: input text line longer than 80 bytes: As described above, ... mandoc: cron.8:395:223: STYLE: input text line longer than 80 bytes: This feature can be ... mandoc: cron.8:401:159: STYLE: input text line longer than 80 bytes: daemon itself, which... mandoc: cron.8:402:133: STYLE: input text line longer than 80 bytes: /etc/crontab, i\&.e\... mandoc: cron.8:404:119: STYLE: input text line longer than 80 bytes: Files in this direct... mandoc: cron.8:407:119: STYLE: input text line longer than 80 bytes: : they must consist ... mandoc: cron.8:414:107: STYLE: input text line longer than 80 bytes: /etc/default/cron, s... mandoc: cron.8:419:113: STYLE: input text line longer than 80 bytes: The intended purpose... mandoc: cron.8:422:83: STYLE: input text line longer than 80 bytes: /etc/cron\&.d\&. Suc... mandoc: cron.8:430:147: STYLE: input text line longer than 80 bytes: daemon\&. This file ... mandoc: cron.8:432:109: STYLE: input text line longer than 80 bytes: program before it is... mandoc: cron.8:435:2: WARNING: skipping paragraph macro: PP after SH mandoc: cron.8:440:2: WARNING: skipping paragraph macro: PP after SH mandoc: cron.8:466:2: WARNING: skipping paragraph macro: br after SH mandoc: cron.8:470:503: STYLE: input text line longer than 80 bytes: Distribute freely, e... mandoc: cron.8:472:109: STYLE: input text line longer than 80 bytes: Since year 1994, man... -.-. Change '-' (\-) to '\(en' (en-dash) for a numeric range. GNU gnulib has recently (2023-06-18) updated its "build_aux/update-copyright" to recognize "\(en" in man pages. cron.8:448:Maintained the package (1996\-2005)\&. cron.8:453:Maintained the package (2005\-2014)\&. cron.8:458:Maintained the package (2010\-2016)\&. cron.8:463:Maintained the package (2022\-2024)\&. -.-. Wrong distance between sentences in the input file. Separate the sentences and subordinate clauses; each begins on a new line. See man-pages(7) ("Conventions for source file layout") and "info groff" ("Input Conventions"). The best procedure is to always start a new sentence on a new line, at least, if you are typing on a computer. Remember coding: Only one command ("sentence") on each (logical) line. E-mail: Easier to quote exactly the relevant lines. Generally: Easier to edit the sentence. Patches: Less unaffected text. Search for two adjacent words is easier, when they belong to the same line, and the same phrase. The amount of space between sentences in the output can then be controlled with the ".ss" request. N.B. The number of lines affected can be too large to be in a patch. 52:Enable LSB compliant names for /etc/cron\&.d files\&. This setting, however, does not affect the parsing of files under 62:Include the FQDN in the subject when sending mails\&. By default, cron will abbreviate the hostname\&. 67:Run cron jobs Now, immediately, and exit\&. This option is useful to perform tests\&. 96:The default is to log the start of all jobs (1)\&. Logging will be disabled if levels is set to zero (0)\&. A value of fifteen (15) will select all options\&. 148:/etc/passwd); crontabs found are loaded into memory\&. Note that crontabs in this directory should not be accessed directly \- the 155:\fBcrontab\fR(5))\&. In Debian, the content of 162:/etc/cron\&.monthly\&. This configuration is specific to Debian, see the note under DEBIAN SPECIFIC below\&. 174:file (they follow the special format of that file, i\&.e\&. they include the 176:field)\&. However, they are independent of 177:/etc/crontab: they do not, for example, inherit environment variable settings from it\&. This change is specific to Debian see the note under 184:directory are monitored for changes\&. The system administrator may create cron jobs in 191:must be owned by root, and must not be group\- or other\-writable\&. In contrast to the spool area, the files under 199:may also be symlinks, provided that both the symlink and the file it points to are owned by root\&. The files under 212:then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute\&. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists) from the owner of the crontab (or from the email address given in the MAILFROM environment variable in the crontab, if such exists)\&. The children copies of cron running these processes have their name coerced to uppercase, as will be seen in the syslog and ps output\&. 220:will then examine the modtime on all crontabs and reload those which have changed\&. Thus 222:need not be restarted whenever a crontab file is modified\&. Note that the 226:Special considerations exist when the clock is changed by less than 3 hours, for example at the beginning and end of daylight savings time\&. If the time has moved forwards, those jobs which would have run in the time that was skipped will be run soon after the change\&. Conversely, if the time has moved backwards by less than 3 hours, those jobs that fall into the repeated time will not be re\-run\&. 228:Only jobs that run at a particular time (not specified as @hourly, nor with \*(Aq*\*(Aq in the hour or minute specifier) are affected\&. Jobs which are specified with wildcards are run based on the new time immediately\&. 246:with values from the latter overriding values from the former\&. These files are read and they will be used to setup the LANG, LC_ALL, and LC_CTYPE environment variables\&. These variables are then used to set the charset of mails, which defaults to \*(AqC\*(Aq\&. 250:affect the environment of tasks running under cron\&. For more information on how to modify the environment of tasks, consult 260:Debian introduces some changes to cron that were not originally available upstream\&. The most significant changes introduced are: 385:\fBcrontab\fR(5))\&. The default system\-wide crontab contains four tasks: run every hour, every day, every week and every month\&. Each of these tasks will execute 387:providing each one of the directories as an argument\&. These tasks are disabled if 391:As described above, the files under these directories have to pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root\&. Additionally, the file names must conform to the filename requirements of 392:\fBrun\-parts\fR: they must be entirely made up of letters, digits and can only contain the special signs underscores (\*(Aq_\*(Aq) and hyphens (\*(Aq\-\*(Aq)\&. Any file that does not conform to these requirements will not be executed by 393:\fBrun\-parts\fR\&. For example, any file containing dots will be ignored\&. This is done to prevent cron from running any of the files that are left by the Debian package management system when handling files in /etc/cron\&.d/ as configuration files (i\&.e\&. files ending in \&.dpkg\-dist, \&.dpkg\-orig, \&.dpkg\-old, and \&.dpkg\-new)\&. 395:This feature can be used by system administrators and packages to include tasks that will be run at defined intervals\&. Files created by packages in these directories should be named after the package that supplies them\&. 401:daemon itself, which handles this location as the system\-wide crontab spool\&. This directory can contain any file defining tasks following the format used in 402:/etc/crontab, i\&.e\&. unlike the user cron spool, these files must provide the username to run the task as in the task definition\&. 407:: they must consist solely of upper\- and lower\-case letters, digits, underscores, and hyphens\&. This means that they 409:contain any dots\&. If the 422:/etc/cron\&.d\&. Such files should be named after the package that supplies them\&. 430:daemon\&. This file determines whether cron will read the system\*(Aqs environment variables and makes it possible to add additional options to the 470:Distribute freely, except: don\*(Aqt remove my name from the source or documentation (don\*(Aqt take credit for my work), mark your changes (don\*(Aqt get me blamed for your possible bugs), don\*(Aqt alter or remove this notice\&. May be sold if buildable source is provided to buyer\&. No warranty of any kind, express or implied, is included with this software; use at your own risk, responsibility for damages (if any) to anyone resulting from the use of this software rests entirely with the user\&. -.-. Split lines longer than 80 characters into two or more lines. Appropriate break points are the end of a sentence and a subordinate clause; after punctuation marks. N.B. The number of lines affected can be too large to be in a patch. Line 34, length 134 \fBcron\fR [\fB\-f\fR] [\fB\-l\fR] [\fB\-L\ \fR\fB\fIloglevel\fR\fR] [\fB\-n\ \fR\fB\fIfqdn\fR\fR] [\fB\-x\ \fR\fB\fIdebugflags\fR\fR] Line 52, length 119 Enable LSB compliant names for /etc/cron\&.d files\&. This setting, however, does not affect the parsing of files under Line 62, length 102 Include the FQDN in the subject when sending mails\&. By default, cron will abbreviate the hostname\&. Line 67, length 85 Run cron jobs Now, immediately, and exit\&. This option is useful to perform tests\&. Line 96, length 158 The default is to log the start of all jobs (1)\&. Logging will be disabled if levels is set to zero (0)\&. A value of fifteen (15) will select all options\&. Line 101, length 101 Tell cron to be more verbose and output debugging information; debugflags is the sum of those values: Line 147, length 104 searches its spool area (/var/spool/cron/crontabs/) for crontab files (which are named after accounts in Line 148, length 130 /etc/passwd); crontabs found are loaded into memory\&. Note that crontabs in this directory should not be accessed directly \- the Line 162, length 108 /etc/cron\&.monthly\&. This configuration is specific to Debian, see the note under DEBIAN SPECIFIC below\&. Line 177, length 141 /etc/crontab: they do not, for example, inherit environment variable settings from it\&. This change is specific to Debian see the note under Line 184, length 87 directory are monitored for changes\&. The system administrator may create cron jobs in Line 191, length 115 must be owned by root, and must not be group\- or other\-writable\&. In contrast to the spool area, the files under Line 199, length 115 may also be symlinks, provided that both the symlink and the file it points to are owned by root\&. The files under Line 212, length 567 then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute\&. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists) from the owner of the crontab (or from the email address given in the MAILFROM environment variable in the crontab, if such exists)\&. The children copies of cron running these processes have their name coerced to uppercase, as will be seen in the syslog and ps output\&. Line 216, length 85 checks each minute to see if its spool directory\*(Aqs modtime (or the modtime on the Line 220, length 89 will then examine the modtime on all crontabs and reload those which have changed\&. Thus Line 224, length 83 command updates the modtime of the spool directory whenever it changes a crontab\&. Line 226, length 404 Special considerations exist when the clock is changed by less than 3 hours, for example at the beginning and end of daylight savings time\&. If the time has moved forwards, those jobs which would have run in the time that was skipped will be run soon after the change\&. Conversely, if the time has moved backwards by less than 3 hours, those jobs that fall into the repeated time will not be re\-run\&. Line 228, length 221 Only jobs that run at a particular time (not specified as @hourly, nor with \*(Aq*\*(Aq in the hour or minute specifier) are affected\&. Jobs which are specified with wildcards are run based on the new time immediately\&. Line 230, length 121 Clock changes of more than 3 hours are considered to be corrections to the clock, and the new time is used immediately\&. Line 233, length 103 logs its action to the syslog facility \*(Aqcron\*(Aq, and logging may be controlled using the standard Line 246, length 264 with values from the latter overriding values from the former\&. These files are read and they will be used to setup the LANG, LC_ALL, and LC_CTYPE environment variables\&. These variables are then used to set the charset of mails, which defaults to \*(AqC\*(Aq\&. Line 250, length 125 affect the environment of tasks running under cron\&. For more information on how to modify the environment of tasks, consult Line 257, length 122 The environment can be redefined in user\*(Aqs crontab definitions but cron will only handle tasks in a single timezone\&. Line 260, length 130 Debian introduces some changes to cron that were not originally available upstream\&. The most significant changes introduced are: Line 385, length 164 \fBcrontab\fR(5))\&. The default system\-wide crontab contains four tasks: run every hour, every day, every week and every month\&. Each of these tasks will execute Line 387, length 83 providing each one of the directories as an argument\&. These tasks are disabled if Line 389, length 86 is installed (except for the hourly task) to prevent conflicts between both daemons\&. Line 391, length 301 As described above, the files under these directories have to pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root\&. Additionally, the file names must conform to the filename requirements of Line 392, length 238 \fBrun\-parts\fR: they must be entirely made up of letters, digits and can only contain the special signs underscores (\*(Aq_\*(Aq) and hyphens (\*(Aq\-\*(Aq)\&. Any file that does not conform to these requirements will not be executed by Line 393, length 341 \fBrun\-parts\fR\&. For example, any file containing dots will be ignored\&. This is done to prevent cron from running any of the files that are left by the Debian package management system when handling files in /etc/cron\&.d/ as configuration files (i\&.e\&. files ending in \&.dpkg\-dist, \&.dpkg\-orig, \&.dpkg\-old, and \&.dpkg\-new)\&. Line 395, length 223 This feature can be used by system administrators and packages to include tasks that will be run at defined intervals\&. Files created by packages in these directories should be named after the package that supplies them\&. Line 401, length 159 daemon itself, which handles this location as the system\-wide crontab spool\&. This directory can contain any file defining tasks following the format used in Line 402, length 133 /etc/crontab, i\&.e\&. unlike the user cron spool, these files must provide the username to run the task as in the task definition\&. Line 404, length 119 Files in this directory have to be owned by root, do not need to be executable (they are configuration files, just like Line 407, length 119 : they must consist solely of upper\- and lower\-case letters, digits, underscores, and hyphens\&. This means that they Line 414, length 107 /etc/default/cron, see below), then they must conform to the LSB namespace specification, exactly as in the Line 419, length 113 The intended purpose of this feature is to allow packages that require finer control of their scheduling than the Line 422, length 83 /etc/cron\&.d\&. Such files should be named after the package that supplies them\&. Line 430, length 147 daemon\&. This file determines whether cron will read the system\*(Aqs environment variables and makes it possible to add additional options to the Line 432, length 109 program before it is executed, either to configure its logging or to define how it will treat the files under Line 470, length 503 Distribute freely, except: don\*(Aqt remove my name from the source or documentation (don\*(Aqt take credit for my work), mark your changes (don\*(Aqt get me blamed for your possible bugs), don\*(Aqt alter or remove this notice\&. May be sold if buildable source is provided to buyer\&. No warranty of any kind, express or implied, is included with this software; use at your own risk, responsibility for damages (if any) to anyone resulting from the use of this software rests entirely with the user\&. Line 472, length 109 Since year 1994, many modifications were made in this manpage, authored by Debian Developers which maintained -.-. Show if docman-to-man created this 4:.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.-. Put a parenthetical sentence, phrase on a separate line, if not part of a code. See man-pages(7), item "semantic newline". cron.8:65:will log all failed jobs (exit status != 0) cron.8:124:searches its spool area (/var/spool/cron/crontabs/) for crontab files (which are named after accounts in cron.8:189:then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute\&. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists) from the owner of the crontab (or from the email address given in the MAILFROM environment variable in the crontab, if such exists)\&. The children copies of cron running these processes have their name coerced to uppercase, as will be seen in the syslog and ps output\&. cron.8:205:Only jobs that run at a particular time (not specified as @hourly, nor with \*(Aq*\*(Aq in the hour or minute specifier) are affected\&. Jobs which are specified with wildcards are run based on the new time immediately\&. cron.8:339:Debian\-specific configuration (/etc/default/cron), cron.8:366:is installed (except for the hourly task) to prevent conflicts between both daemons\&. cron.8:369:\fBrun\-parts\fR: they must be entirely made up of letters, digits and can only contain the special signs underscores (\*(Aq_\*(Aq) and hyphens (\*(Aq\-\*(Aq)\&. Any file that does not conform to these requirements will not be executed by cron.8:370:\fBrun\-parts\fR\&. For example, any file containing dots will be ignored\&. This is done to prevent cron from running any of the files that are left by the Debian package management system when handling files in /etc/cron\&.d/ as configuration files (i\&.e\&. files ending in \&.dpkg\-dist, \&.dpkg\-orig, \&.dpkg\-old, and \&.dpkg\-new)\&. cron.8:447:Distribute freely, except: don\*(Aqt remove my name from the source or documentation (don\*(Aqt take credit for my work), mark your changes (don\*(Aqt get me blamed for your possible bugs), don\*(Aqt alter or remove this notice\&. May be sold if buildable source is provided to buyer\&. No warranty of any kind, express or implied, is included with this software; use at your own risk, responsibility for damages (if any) to anyone resulting from the use of this software rests entirely with the user\&. -.-. Output from "test-groff -mandoc -t -K utf8 -rF0 -rHY=0 -ww -b -z ": troff: backtrace: file '<stdin>':65 troff:<stdin>:65: warning: trailing space in the line -.-. Additionally (general): Abbreviations get a '\&' added after their final full stop (.) to mark them as such and not as an end of a sentence. There is no need to add a '\&' before a full stop (.) if it has a character before it! NO PATCH; TOO MANY BAD LINES; FIX THE MAN PAGE GENERATOR (AND THE INPUT FILE)