*
*/
/*
- Copyright (C) 2000-2003 Kern Sibbald and John Walker
+ Copyright (C) 2000-2004 Kern Sibbald and John Walker
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
case FT_LNK:
Dmsg2(30, "FT_LNK saving: %s -> %s\n", ff_pkt->fname, ff_pkt->link);
break;
- case FT_DIR:
+ case FT_DIRBEGIN:
+ return 1; /* ignored */
+ case FT_DIREND:
Dmsg1(30, "FT_DIR saving: %s\n", ff_pkt->fname);
break;
case FT_SPEC:
case FT_FIFO:
Dmsg1(30, "FT_FIFO saving: %s\n", ff_pkt->fname);
break;
- case FT_NOACCESS:
- Jmsg(jcr, M_NOTSAVED, -1, _(" Could not access %s: ERR=%s\n"), ff_pkt->fname, strerror(ff_pkt->ff_errno));
+ case FT_NOACCESS: {
+ berrno be;
+ be.set_errno(ff_pkt->ff_errno);
+ Jmsg(jcr, M_NOTSAVED, -1, _(" Could not access %s: ERR=%s\n"), ff_pkt->fname, be.strerror());
jcr->Errors++;
return 1;
- case FT_NOFOLLOW:
- Jmsg(jcr, M_NOTSAVED, -1, _(" Could not follow link %s: ERR=%s\n"), ff_pkt->fname, strerror(ff_pkt->ff_errno));
+ }
+ case FT_NOFOLLOW: {
+ berrno be;
+ be.set_errno(ff_pkt->ff_errno);
+ Jmsg(jcr, M_NOTSAVED, -1, _(" Could not follow link %s: ERR=%s\n"), ff_pkt->fname, be.strerror());
jcr->Errors++;
return 1;
- case FT_NOSTAT:
- Jmsg(jcr, M_NOTSAVED, -1, _(" Could not stat %s: ERR=%s\n"), ff_pkt->fname, strerror(ff_pkt->ff_errno));
+ }
+ case FT_NOSTAT: {
+ berrno be;
+ be.set_errno(ff_pkt->ff_errno);
+ Jmsg(jcr, M_NOTSAVED, -1, _(" Could not stat %s: ERR=%s\n"), ff_pkt->fname, be.strerror());
jcr->Errors++;
return 1;
+ }
case FT_DIRNOCHG:
case FT_NOCHG:
Jmsg(jcr, M_SKIPPED, -1, _(" Unchanged file skipped: %s\n"), ff_pkt->fname);
case FT_NOFSCHG:
Jmsg(jcr, M_SKIPPED, -1, _(" File system change prohibited. Directory skipped: %s\n"), ff_pkt->fname);
return 1;
- case FT_NOOPEN:
- Jmsg(jcr, M_NOTSAVED, -1, _(" Could not open directory %s: ERR=%s\n"), ff_pkt->fname, strerror(ff_pkt->ff_errno));
+ case FT_NOOPEN: {
+ berrno be;
+ be.set_errno(ff_pkt->ff_errno);
+ Jmsg(jcr, M_NOTSAVED, -1, _(" Could not open directory %s: ERR=%s\n"), ff_pkt->fname, be.strerror());
jcr->Errors++;
return 1;
+ }
default:
Jmsg(jcr, M_NOTSAVED, 0, _(" Unknown file type %d: %s\n"), ff_pkt->type, ff_pkt->fname);
jcr->Errors++;
ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO) {
if ((bopen(&bfd, ff_pkt->fname, O_RDONLY | O_BINARY, 0)) < 0) {
ff_pkt->ff_errno = errno;
+ berrno be;
+ be.set_errno(bfd.berrno);
Jmsg(jcr, M_NOTSAVED, -1, _(" Cannot open %s: ERR=%s.\n"),
- ff_pkt->fname, berror(&bfd));
+ ff_pkt->fname, be.strerror());
jcr->Errors++;
return 1;
}
P(jcr->mutex);
jcr->JobFiles++; /* increment number of files sent */
- pm_strcpy(&jcr->last_fname, ff_pkt->fname);
+ pm_strcpy(jcr->last_fname, ff_pkt->fname);
V(jcr->mutex);
/*
stat = bnet_fsend(dir, "%d %d %s %s%c%s%c%s%c", jcr->JobFiles,
STREAM_UNIX_ATTRIBUTES, ff_pkt->VerifyOpts, ff_pkt->fname,
0, attribs, 0, ff_pkt->link, 0);
- } else if (ff_pkt->type == FT_DIR) {
+ } else if (ff_pkt->type == FT_DIREND) {
/* Here link is the canonical filename (i.e. with trailing slash) */
stat = bnet_fsend(dir,"%d %d %s %s%c%s%c%c", jcr->JobFiles,
STREAM_UNIX_ATTRIBUTES, ff_pkt->VerifyOpts, ff_pkt->link,
char MD5buf[40]; /* 24 should do */
MD5Init(&md5c);
while ((n=bread(&bfd, jcr->big_buf, jcr->buf_size)) > 0) {
- MD5Update(&md5c, ((unsigned char *) jcr->big_buf), n);
+ MD5Update(&md5c, ((unsigned char *)jcr->big_buf), (int)n);
jcr->JobBytes += n;
jcr->ReadBytes += n;
}
if (n < 0) {
+ berrno be;
+ be.set_errno(bfd.berrno);
Jmsg(jcr, M_ERROR, -1, _("Error reading file %s: ERR=%s\n"),
- ff_pkt->fname, berror(&bfd));
+ ff_pkt->fname, be.strerror());
jcr->Errors++;
}
MD5Final(signature, &md5c);
char SHA1buf[40]; /* 24 should do */
SHA1Init(&sha1c);
while ((n=bread(&bfd, jcr->big_buf, jcr->buf_size)) > 0) {
- SHA1Update(&sha1c, ((unsigned char *) jcr->big_buf), n);
+ SHA1Update(&sha1c, ((unsigned char *)jcr->big_buf), (int)n);
jcr->JobBytes += n;
jcr->ReadBytes += n;
}
if (n < 0) {
+ berrno be;
+ be.set_errno(bfd.berrno);
Jmsg(jcr, M_ERROR, -1, _("Error reading file %s: ERR=%s\n"),
- ff_pkt->fname, berror(&bfd));
+ ff_pkt->fname, be.strerror());
jcr->Errors++;
}
SHA1Final(&sha1c, signature);