#ifndef lint
static const char rcsid[] =
- "$Id: dirs.c,v 1.32 2005/05/02 15:10:46 stelian Exp $";
+ "$Id: dirs.c,v 1.36 2010/06/11 11:19:17 stelian Exp $";
#endif /* not lint */
#include <config.h>
if (dirloc + dp->d_reclen > DIRBLKSIZ) {
((struct direct *)(dirbuf + prev))->d_reclen =
DIRBLKSIZ - prev;
- if ( fwrite(dirbuf, 1, DIRBLKSIZ, df) != DIRBLKSIZ )
+ if ( fwrite(dirbuf, DIRBLKSIZ, 1, df) != 1 )
err(1,"cannot write to file %s", dirfile);
dirloc = 0;
}
fprintf(stderr, "directory mode, owner, and times not set\n");
return;
}
- mf = fopen(modefile, "r");
+ mf = FOPEN(modefile, "r");
if (mf == NULL) {
warn("fopen");
fprintf(stderr, "cannot open mode file %s\n", modefile);
clearerr(mf);
for (;;) {
char xattr[XATTR_MAXSIZE];
- (void) fread((char *)&node, 1, sizeof(struct modeinfo), mf);
- if (feof(mf))
- break;
- if (node.xattr) {
- (void) fread(xattr, 1, XATTR_MAXSIZE, mf);
+ if (fread((char *)&node, sizeof(struct modeinfo), 1, mf) != 1) {
if (feof(mf))
break;
+ err(1, "fread");
+ }
+ if (node.xattr) {
+ if (fread(xattr, XATTR_MAXSIZE, 1, mf) != 1) {
+ if (feof(mf))
+ break;
+ err(1, "fread");
+ }
}
ep = lookupino(node.ino);
if (command == 'i' || command == 'x') {
panic("cannot find directory inode %d\n", node.ino);
} else {
cp = myname(ep);
- (void) chown(cp, node.uid, node.gid);
+ if (chown(cp, node.uid, node.gid) < 0)
+ warn("chown");
(void) chmod(cp, node.mode);
+ utimes(cp, node.timep);
+ if (node.xattr)
+ xattr_extract(cp, xattr);
+ ep->e_flags &= ~NEW;
if (node.flags)
#ifdef __linux__
(void) lsetflags(cp, node.flags);
(void) chflags(cp, node.flags);
#endif
#endif
- utimes(cp, node.timep);
- if (node.xattr)
- xattr_extract(cp, xattr);
- ep->e_flags &= ~NEW;
}
}
if (ferror(mf))
fprintf(stderr, "directory mode, owner, and times not set\n");
return;
}
- mf = fopen(modefile, "r");
+ mf = FOPEN(modefile, "r");
if (mf == NULL) {
warn("fopen");
fprintf(stderr, "cannot open mode file %s\n", modefile);
clearerr(mf);
for (;;) {
char xattr[XATTR_MAXSIZE];
- (void) fread((char *)&node, 1, sizeof(struct modeinfo), mf);
- if (feof(mf))
- break;
- if (node.xattr) {
- (void) fread(xattr, 1, XATTR_MAXSIZE, mf);
+ if (fread((char *)&node, sizeof(struct modeinfo), 1, mf) != 1) {
if (feof(mf))
break;
+ err(1, "fread");
+ }
+ if (node.xattr) {
+ if (fread(xattr, XATTR_MAXSIZE, 1, mf) != 1) {
+ if (feof(mf))
+ break;
+ err(1, "fread");
+ }
}
ep = lookupino(node.ino);
if (ep == NULL) {
panic("cannot find directory inode %d\n", node.ino);
} else {
- cp = myname(ep);
struct STAT sb;
unsigned long newflags;
+ cp = myname(ep);
if (LSTAT(cp, &sb) < 0) {
warn("unable to stat %s", cp);
do_compare_error;
node.uid = dip->di_uid;
node.gid = dip->di_gid;
node.xattr = xattr ? 1 : 0;
- if ( fwrite((char *)&node, 1, sizeof(struct modeinfo), mf) != sizeof(struct modeinfo) )
+ if ( fwrite((char *)&node, sizeof(struct modeinfo), 1, mf) != 1 )
err(1,"cannot write to file %s", modefile);
if (xattr)
- if ( fwrite(xattr, 1, XATTR_MAXSIZE, mf) != XATTR_MAXSIZE)
+ if ( fwrite(xattr, XATTR_MAXSIZE, 1, mf) != 1 )
err(1,"cannot write to file %s", modefile);
}