Re: truncate("x", -1)

From: Ambrose Feinstein (ambroseat_private)
Date: Mon Apr 19 1999 - 11:30:07 PDT

  • Next message: Daniel Alex Finkelstein: "Re: Plain text passwords--necessary"

    > Fortunately, even in the Linux case, it doesn't seem to mess up quotas.
    
    of course not.  ls -ls the file.  its just a few indirect blocks.
    
    > The argument to [f]truncate is meant to be a size_t not a ssize_t, so
    > probably this is a signed/unsigned bug.
    
    actually its off_t, but that is indeed the problem.  from
    linux/fs/open.c, line 86:
      asmlinkage int sys_truncate(const char * path, unsigned long length)
    
    > The man page says that it should
    > truncate a file to at most the specified size, so the correct behaviour
    > should be
    >
    >   truncate("x", -1)
    >   kernel: current size 0 < new size 2^32 - 1
    >   kernel: return success with no action
    
    you are misreading the man page.  to at most the *specified* length,
    not the *current* length.  on every unix, if you truncate() with a
    length greater than the file currently has, it gets extended with a
    hole.
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 14:42:57 PDT