lib9: can change length in dirfwstat, dirwstat; mode in dirwstat (David Swasey)
This commit is contained in:
parent
63a686861c
commit
115dbcecc8
2 changed files with 21 additions and 6 deletions
|
|
@ -48,6 +48,10 @@ dirfwstat(int fd, Dir *dir)
|
|||
if(futimes(fd, tv) < 0)
|
||||
ret = -1;
|
||||
}
|
||||
if(~dir->length != 0){
|
||||
if(ftruncate(fd, dir->length) < 0)
|
||||
ret = -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,13 +7,24 @@
|
|||
int
|
||||
dirwstat(char *file, Dir *dir)
|
||||
{
|
||||
int ret;
|
||||
struct utimbuf ub;
|
||||
|
||||
/* BUG handle more */
|
||||
if(~dir->mtime == 0)
|
||||
return 0;
|
||||
|
||||
ub.actime = dir->mtime;
|
||||
ub.modtime = dir->mtime;
|
||||
return utime(file, &ub);
|
||||
ret = 0;
|
||||
if(~dir->mode != 0){
|
||||
if(chmod(file, dir->mode) < 0)
|
||||
ret = -1;
|
||||
}
|
||||
if(~dir->mtime != 0){
|
||||
ub.actime = dir->mtime;
|
||||
ub.modtime = dir->mtime;
|
||||
if(utime(file, &ub) < 0)
|
||||
ret = -1;
|
||||
}
|
||||
if(~dir->length != 0){
|
||||
if(truncate(file, dir->length) < 0)
|
||||
ret = -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue