cvs commit: src/bin/cat
Jason Smethers
jason at smethers.net
Sun Nov 7 15:29:27 PST 2004
Matthew Dillon wrote:
:
:Liam J. Foy wrote:
:> liamfoy 2004/11/04 13:31:37 PST
:>
:> DragonFly src repository
:>
:> Modified files:
:> bin/cat cat.c
:> Log:
:> - Remove unnecessary selection statement to see if buf == NULL.
:> - Don't use fileno to get stdout, just use STDOUT_FILENO
:> - Fix malloc err message
:>
:> OK'ed by: Joerg and Jeroen
:>
:> Revision Changes Path
:> 1.12 +8 -10 src/bin/cat/cat.c
:>
:>
:> http://www.dragonflybsd.org/cvsweb/src/bin/cat/cat.c.diff?r1=1.11&r2=1.12&f=u
:
:
:Removing the check for (buf == NULL):
:1. Introduces a memory leak -- equal to (bsize * (n - 1)) where n is the
:number of times raw_cat is called.
:2. Adds unecessary work -- stdout never changes
:
:
:Also, the constant 1024 in the buffer size check should be replaced by
:the posix constant BUFSIZ.
:
:- Jason
Whoops, quite right. I missed the fact that 'buf' was a static when
I review Liam's commit.
The original code isn't so good either. While I don't expect we
will be cat'ing multiple block devices I think it would probably still
be a good idea to fstat/resize the buffer on a per-descriptor basis.
The expensive is minimal.
I'll just go ahead and fix it. Don't worry about it, Liam.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
But there is only one descriptor to stat -- stdout. Cat always writes to
stdout, and as per POSIX stdout is never closed and reopened.
Shouldn't fstat therefore always return the same value? Or, do you mean
you want to optimize the code for the input buffer instead of the output
buffer?
- Jason
More information about the Commits
mailing list