.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SHRINKFILE 1" .TH SHRINKFILE 1 "2023-09-06" "INN 2.7.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" shrinkfile \- Shrink files on line boundaries .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBshrinkfile\fR [\fB\-nv\fR] [\fB\-m\fR \fImaxsize\fR] [\fB\-s\fR \fIsize\fR] \fIfile\fR [\fIfile\fR \&...] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBshrinkfile\fR program shrinks files to at most a given \fIsize\fR when their size is larger than \fImaxsize\fR, preserving the data at the end of the file. Truncation is performed on line boundaries, where a line is a series of bytes ending with a newline (\f(CW\*(C`\en\*(C'\fR). There is no line length restriction and files may contain any binary data. .PP If the first line is longer than the absolute value of \fIsize\fR, the file will be truncated to zero length. .PP The maximum file size \fBshrinkfile\fR can handle is 2,147,483,647 bytes. .PP Temporary files are created in the \fIpathtmp\fR directory as set in \fIinn.conf\fR. The \f(CW\*(C`TMPDIR\*(C'\fR environment variable may be used to specify a different directory. .PP A newline will be added to any non-empty file that does not end with a newline, if naturally the resulting file size does not exceed \fIsize\fR by this addition. .PP This program is currently used by only \fBnntpsend\fR\|(8). .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-m\fR \fImaxsize\fR" 4 .IX Item "-m maxsize" This option sets the maximum size allowed before truncation occurs. .Sp By default, \fImaxsize\fR is the same as \fIsize\fR (as set with the \fB\-s\fR flag). If \fImaxsize\fR is less than \fIsize\fR, \fImaxsize\fR is reset to \fIsize\fR. .Sp This parameter may end with a \f(CW\*(C`k\*(C'\fR, \f(CW\*(C`m\*(C'\fR or \f(CW\*(C`g\*(C'\fR, indicating kilobyte (1,024 bytes), megabyte (1,048,576 bytes) or gigabyte (1,073,741,824 bytes) lengths. Uppercase letters are also allowed. .IP "\fB\-n\fR" 4 .IX Item "-n" This flag is used to determine if any file is too large. No files will be altered in this mode. .Sp Exits with status code \f(CW0\fR if any file is larger than \fImaxsize\fR (as set with the \fB\-m\fR flag), and exits with status code \f(CW1\fR otherwise. .IP "\fB\-s\fR \fIsize\fR" 4 .IX Item "-s size" By default, \fIsize\fR is assumed to be zero and files are truncated to zero bytes. This flag may be used to change the truncation size. Because the program truncates only on line boundaries, the final size may be smaller than the specified truncation size. .Sp This parameter may end with a \f(CW\*(C`k\*(C'\fR, \f(CW\*(C`m\*(C'\fR or \f(CW\*(C`g\*(C'\fR, indicating kilobyte (1,024 bytes), megabyte (1,048,576 bytes) or gigabyte (1,073,741,824 bytes) lengths. Uppercase letters are also allowed. .IP "\fB\-v\fR" 4 .IX Item "-v" Prints to standard output a status line if a file was shrunk. .SH "EXAMPLES" .IX Header "EXAMPLES" Example usage: .PP .Vb 4 \& shrinkfile \-s 4m curds \& shrinkfile \-s 1g \-v whey \& shrinkfile \-s 500k \-m 4m \-v curds whey \& if shrinkfile \-n \-s 100m whey; then echo "whey is way too big"; fi .Ve .PP The first command shrinks \fIcurds\fR to 4\ \s-1MB\s0 if bigger than this size. The second command shrinks \fIwhey\fR to 1\ \s-1GB\s0 and outputs a log line if the file is bigger than this size. The third command shrinks both \fIcurds\fR and \&\fIwhey\fR to 500\ kB if bigger than 4\ \s-1MB,\s0 and outputs a log line for the files it has shrunk. The fourth command just prints a sentence if \f(CW\*(C`whey\*(C'\fR is bigger than 100\ \s-1MB,\s0 without shrinking it. .SH "HISTORY" .IX Header "HISTORY" Written by Landon Curt Noll and Rich \f(CW$alz\fR for InterNetNews. Rewritten into \s-1POD\s0 by Julien Elie. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBnntpsend\fR\|(8).