Mercurial > hg > octave-jordi > gnulib-hg
annotate lib/copy-file.c @ 18065:fd4663ad7454
time_rz: port to Solaris etc.
Works around a tzname problem on platforms like Solaris that have
tzname but not tm_zone, by setting tzname at the appropriate time
and restoring it later.
* lib/time_rz.c (tzname_address, tzname_value) [HAVE_TZNAME]:
New static vars.
(save_abbr) [HAVE_TZNAME]: Set them.
(revert_tz) [HAVE_TZNAME]: Clear or use them.
(restore_tzname): New function.
(localtime_rz, mktime_z): Use it.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 25 Jul 2015 15:20:10 -0700 |
parents | ab58d4870664 |
children |
rev | line source |
---|---|
4266 | 1 /* Copying of files. |
17848 | 2 Copyright (C) 2001-2003, 2006-2007, 2009-2015 Free Software Foundation, Inc. |
4266 | 3 Written by Bruno Haible <haible@clisp.cons.org>, 2001. |
4 | |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8196
diff
changeset
|
5 This program is free software: you can redistribute it and/or modify |
4266 | 6 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8196
diff
changeset
|
7 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8196
diff
changeset
|
8 (at your option) any later version. |
4266 | 9 |
10 This program is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 GNU General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU General Public License | |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8196
diff
changeset
|
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
4266 | 17 |
18 | |
7304
1c4ed7637c24
Include <config.h> unconditionally.
Bruno Haible <bruno@clisp.org>
parents:
6751
diff
changeset
|
19 #include <config.h> |
4266 | 20 |
21 /* Specification. */ | |
22 #include "copy-file.h" | |
23 | |
24 #include <errno.h> | |
25 #include <fcntl.h> | |
4310
17ce7ef2789c
Include <stddef.h>, for size_t.
Bruno Haible <bruno@clisp.org>
parents:
4308
diff
changeset
|
26 #include <stddef.h> |
8196
5166dec344af
exit.h is replaced with stdlib.h.
Bruno Haible <bruno@clisp.org>
parents:
7863
diff
changeset
|
27 #include <stdlib.h> |
4266 | 28 #include <sys/stat.h> |
6751
1b0092424a44
Include <unistd.h> unconditionally.
Bruno Haible <bruno@clisp.org>
parents:
6259
diff
changeset
|
29 #include <unistd.h> |
4266 | 30 |
31 #if HAVE_UTIME || HAVE_UTIMES | |
32 # if HAVE_UTIME_H | |
33 # include <utime.h> | |
34 # else | |
35 # include <sys/utime.h> | |
36 # endif | |
37 #endif | |
38 | |
39 #include "error.h" | |
17372
8c32877a40e6
copy-file, rpmatch: fix problems found by cppcheck
Paul Eggert <eggert@cs.ucla.edu>
parents:
17249
diff
changeset
|
40 #include "ignore-value.h" |
4266 | 41 #include "safe-read.h" |
42 #include "full-write.h" | |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
43 #include "acl.h" |
4266 | 44 #include "binary-io.h" |
16271 | 45 #include "quote.h" |
4266 | 46 #include "gettext.h" |
12198
e8fbc5424b99
digests, copy-file: increase the IO buffer size from 4KiB to 32KiB
Pádraig Brady <P@draigBrady.com>
parents:
9309
diff
changeset
|
47 #include "xalloc.h" |
4266 | 48 |
49 #define _(str) gettext (str) | |
50 | |
12198
e8fbc5424b99
digests, copy-file: increase the IO buffer size from 4KiB to 32KiB
Pádraig Brady <P@draigBrady.com>
parents:
9309
diff
changeset
|
51 enum { IO_SIZE = 32 * 1024 }; |
7863 | 52 |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
53 int |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
54 qcopy_file_preserving (const char *src_filename, const char *dest_filename) |
4266 | 55 { |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
56 int err = 0; |
4266 | 57 int src_fd; |
58 struct stat statbuf; | |
59 int mode; | |
60 int dest_fd; | |
12198
e8fbc5424b99
digests, copy-file: increase the IO buffer size from 4KiB to 32KiB
Pádraig Brady <P@draigBrady.com>
parents:
9309
diff
changeset
|
61 char *buf = xmalloc (IO_SIZE); |
4266 | 62 |
63 src_fd = open (src_filename, O_RDONLY | O_BINARY); | |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
64 if (src_fd < 0) |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
65 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
66 err = GL_COPY_ERR_OPEN_READ; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
67 goto error; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
68 } |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
69 if (fstat (src_fd, &statbuf) < 0) |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
70 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
71 err = GL_COPY_ERR_OPEN_READ; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
72 goto error_src; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
73 } |
4266 | 74 |
75 mode = statbuf.st_mode & 07777; | |
76 | |
77 dest_fd = open (dest_filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0600); | |
78 if (dest_fd < 0) | |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
79 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
80 err = GL_COPY_ERR_OPEN_BACKUP_WRITE; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
81 goto error_src; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
82 } |
4266 | 83 |
84 /* Copy the file contents. */ | |
85 for (;;) | |
86 { | |
12198
e8fbc5424b99
digests, copy-file: increase the IO buffer size from 4KiB to 32KiB
Pádraig Brady <P@draigBrady.com>
parents:
9309
diff
changeset
|
87 size_t n_read = safe_read (src_fd, buf, IO_SIZE); |
4266 | 88 if (n_read == SAFE_READ_ERROR) |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
89 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
90 err = GL_COPY_ERR_READ; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
91 goto error_src_dest; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
92 } |
4266 | 93 if (n_read == 0) |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12198
diff
changeset
|
94 break; |
4266 | 95 |
96 if (full_write (dest_fd, buf, n_read) < n_read) | |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
97 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
98 err = GL_COPY_ERR_WRITE; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
99 goto error_src_dest; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
100 } |
4266 | 101 } |
102 | |
12198
e8fbc5424b99
digests, copy-file: increase the IO buffer size from 4KiB to 32KiB
Pádraig Brady <P@draigBrady.com>
parents:
9309
diff
changeset
|
103 free (buf); |
e8fbc5424b99
digests, copy-file: increase the IO buffer size from 4KiB to 32KiB
Pádraig Brady <P@draigBrady.com>
parents:
9309
diff
changeset
|
104 |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
105 #if !USE_ACL |
4266 | 106 if (close (dest_fd) < 0) |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
107 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
108 err = GL_COPY_ERR_WRITE; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
109 goto error_src; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
110 } |
4266 | 111 if (close (src_fd) < 0) |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
112 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
113 err = GL_COPY_ERR_AFTER_READ; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
114 goto error; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
115 } |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
116 #endif |
4266 | 117 |
118 /* Preserve the access and modification times. */ | |
119 #if HAVE_UTIME | |
120 { | |
121 struct utimbuf ut; | |
122 | |
123 ut.actime = statbuf.st_atime; | |
124 ut.modtime = statbuf.st_mtime; | |
125 utime (dest_filename, &ut); | |
126 } | |
127 #elif HAVE_UTIMES | |
128 { | |
129 struct timeval ut[2]; | |
130 | |
131 ut[0].tv_sec = statbuf.st_atime; ut[0].tv_usec = 0; | |
132 ut[1].tv_sec = statbuf.st_mtime; ut[1].tv_usec = 0; | |
133 utimes (dest_filename, &ut); | |
134 } | |
135 #endif | |
136 | |
4268 | 137 #if HAVE_CHOWN |
4266 | 138 /* Preserve the owner and group. */ |
17372
8c32877a40e6
copy-file, rpmatch: fix problems found by cppcheck
Paul Eggert <eggert@cs.ucla.edu>
parents:
17249
diff
changeset
|
139 ignore_value (chown (dest_filename, statbuf.st_uid, statbuf.st_gid)); |
4268 | 140 #endif |
4266 | 141 |
142 /* Preserve the access permissions. */ | |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
143 #if USE_ACL |
16271 | 144 switch (qcopy_acl (src_filename, src_fd, dest_filename, dest_fd, mode)) |
145 { | |
146 case -2: | |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
147 err = GL_COPY_ERR_GET_ACL; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
148 goto error_src_dest; |
16271 | 149 case -1: |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
150 err = GL_COPY_ERR_SET_ACL; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
151 goto error_src_dest; |
16271 | 152 } |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
153 #else |
4266 | 154 chmod (dest_filename, mode); |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
155 #endif |
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
156 |
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
157 #if USE_ACL |
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
158 if (close (dest_fd) < 0) |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
159 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
160 err = GL_COPY_ERR_WRITE; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
161 goto error_src; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
162 } |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
163 if (close (src_fd) < 0) |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
164 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
165 err = GL_COPY_ERR_AFTER_READ; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
166 goto error; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
167 } |
7742
4a26effdff28
Preserve ACLs while copying.
Bruno Haible <bruno@clisp.org>
parents:
7304
diff
changeset
|
168 #endif |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
169 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
170 return 0; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
171 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
172 error_src_dest: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
173 close (dest_fd); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
174 error_src: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
175 close (src_fd); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
176 error: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
177 return err; |
4266 | 178 } |
16273
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
179 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
180 void |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
181 copy_file_preserving (const char *src_filename, const char *dest_filename) |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
182 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
183 switch (qcopy_file_preserving (src_filename, dest_filename)) |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
184 { |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
185 case 0: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
186 return; |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
187 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
188 case GL_COPY_ERR_OPEN_READ: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
189 error (EXIT_FAILURE, errno, _("error while opening %s for reading"), |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
190 quote (src_filename)); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
191 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
192 case GL_COPY_ERR_OPEN_BACKUP_WRITE: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
193 error (EXIT_FAILURE, errno, _("cannot open backup file %s for writing"), |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
194 quote (dest_filename)); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
195 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
196 case GL_COPY_ERR_READ: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
197 error (EXIT_FAILURE, errno, _("error reading %s"), |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
198 quote (src_filename)); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
199 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
200 case GL_COPY_ERR_WRITE: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
201 error (EXIT_FAILURE, errno, _("error writing %s"), |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
202 quote (dest_filename)); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
203 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
204 case GL_COPY_ERR_AFTER_READ: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
205 error (EXIT_FAILURE, errno, _("error after reading %s"), |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
206 quote (src_filename)); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
207 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
208 case GL_COPY_ERR_GET_ACL: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
209 error (EXIT_FAILURE, errno, "%s", quote (src_filename)); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
210 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
211 case GL_COPY_ERR_SET_ACL: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
212 error (EXIT_FAILURE, errno, _("preserving permissions for %s"), |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
213 quote (dest_filename)); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
214 |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
215 default: |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
216 abort (); |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
217 } |
d50152d6b5d2
copy-file: add error-code-returning variant.
Reuben Thomas <rrt@sc3d.org>
parents:
16272
diff
changeset
|
218 } |