X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Ffindlib%2Fattribs.c;h=d747543e188cc62c3b76bc82c4afbf9930c4ad21;hb=fb023b61aa95fdf2763963be726e18b896d6c01f;hp=4c71cc679ec719486621ae43186d6acde1e2c4e9;hpb=9cc60416baa0166420327c7f15f6ede12b4d06e8;p=bacula%2Fbacula diff --git a/bacula/src/findlib/attribs.c b/bacula/src/findlib/attribs.c old mode 100755 new mode 100644 index 4c71cc679e..d747543e18 --- a/bacula/src/findlib/attribs.c +++ b/bacula/src/findlib/attribs.c @@ -1,3 +1,30 @@ +/* + Bacula® - The Network Backup Solution + + Copyright (C) 2002-2007 Free Software Foundation Europe e.V. + + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation plus additions + that are listed in the file LICENSE. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of John Walker. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ /* * Encode and decode standard Unix attributes and * Extended attributes for Win32 and @@ -8,20 +35,6 @@ * Version $Id$ * */ -/* - Copyright (C) 2000-2005 Kern Sibbald - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - version 2 as amended with additional clauses defined in the - file LICENSE in the main source directory. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - the file LICENSE for additional details. - - */ #include "bacula.h" #include "find.h" @@ -357,7 +370,7 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) struct utimbuf ut; mode_t old_mask; bool ok = true; - off_t fsize; + boffset_t fsize; #if defined(HAVE_WIN32) if (attr->stream == STREAM_UNIX_ATTRIBUTES_EX && @@ -390,13 +403,21 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) char ec1[50], ec2[50]; fsize = blseek(ofd, 0, SEEK_END); bclose(ofd); /* first close file */ - if (fsize > 0 && fsize != (off_t)attr->statp.st_size) { + if (attr->type == FT_REG && fsize > 0 && fsize != (boffset_t)attr->statp.st_size) { Jmsg3(jcr, M_ERROR, 0, _("File size of restored file %s not correct. Original %s, restored %s.\n"), attr->ofname, edit_uint64(attr->statp.st_size, ec1), edit_uint64(fsize, ec2)); } } + /* + * We do not restore sockets, so skip trying to restore their + * attributes. + */ + if (attr->type == FT_SPEC && S_ISSOCK(attr->statp.st_mode)) { + goto bail_out; + } + ut.actime = attr->statp.st_atime; ut.modtime = attr->statp.st_mtime; @@ -452,6 +473,8 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd) } #endif } + +bail_out: pm_strcpy(attr->ofname, "*none*"); umask(old_mask); return ok;