Mercurial > gftp.yaz
comparison lib/local.c @ 7:5551ab2301fe
* Fixed a DND crash
* When running a SSH bookmark, make sure need_userpass is enabled for that connection
* moved anonymous ftp stuff from gtk port to rfc959.c
* call bind_textdomain_codeset in gtk+ port
* translation fixes for menus (from Owen Taylor <otaylor@redhat.com>)
author | masneyb |
---|---|
date | Fri, 23 Aug 2002 12:40:44 +0000 |
parents | 8b1883341c6f |
children | 83090328581e |
comparison
equal
deleted
inserted
replaced
6:5678b5179c35 | 7:5551ab2301fe |
---|---|
200 static long | 200 static long |
201 local_get_file (gftp_request * request, const char *filename, FILE * fd, | 201 local_get_file (gftp_request * request, const char *filename, FILE * fd, |
202 off_t startsize) | 202 off_t startsize) |
203 { | 203 { |
204 size_t size; | 204 size_t size; |
205 int sock, flags; | |
205 | 206 |
206 g_return_val_if_fail (request != NULL, -2); | 207 g_return_val_if_fail (request != NULL, -2); |
207 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, -2); | 208 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, -2); |
208 g_return_val_if_fail (filename != NULL, -2); | 209 g_return_val_if_fail (filename != NULL, -2); |
209 | 210 |
210 if (fd == NULL) | 211 if (fd == NULL) |
211 { | 212 { |
212 if ((request->datafd = fopen (filename, "rb")) == NULL) | 213 flags = O_RDONLY; |
214 #if defined (_LARGEFILE_SOURCE) | |
215 flags |= O_LARGEFILE; | |
216 #endif | |
217 | |
218 if ((sock = open (filename, flags)) < 0) | |
213 { | 219 { |
214 request->logging_function (gftp_logging_error, request->user_data, | 220 request->logging_function (gftp_logging_error, request->user_data, |
215 _("Error: Cannot open local file %s: %s\n"), | 221 _("Error: Cannot open local file %s: %s\n"), |
216 filename, g_strerror (errno)); | 222 filename, g_strerror (errno)); |
217 return (-2); | 223 return (-2); |
218 } | 224 } |
225 | |
226 if ((request->datafd = fdopen (sock, "rb")) == NULL) | |
227 { | |
228 request->logging_function (gftp_logging_error, request->user_data, | |
229 _("Cannot fdopen() socket for %s: %s\n"), | |
230 filename, g_strerror (errno)); | |
231 close (sock); | |
232 return (-2); | |
233 } | |
219 } | 234 } |
220 else | 235 else |
221 request->datafd = fd; | 236 request->datafd = fd; |
222 | 237 |
223 if (lseek (fileno (request->datafd), 0, SEEK_END) == -1) | 238 if (lseek (fileno (request->datafd), 0, SEEK_END) == -1) |
253 | 268 |
254 static int | 269 static int |
255 local_put_file (gftp_request * request, const char *filename, FILE * fd, | 270 local_put_file (gftp_request * request, const char *filename, FILE * fd, |
256 off_t startsize, off_t totalsize) | 271 off_t startsize, off_t totalsize) |
257 { | 272 { |
258 int sock; | 273 int sock, flags; |
259 | 274 |
260 g_return_val_if_fail (request != NULL, -2); | 275 g_return_val_if_fail (request != NULL, -2); |
261 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, -2); | 276 g_return_val_if_fail (request->protonum == GFTP_LOCAL_NUM, -2); |
262 g_return_val_if_fail (filename != NULL, -2); | 277 g_return_val_if_fail (filename != NULL, -2); |
263 | 278 |
264 if (fd == NULL) | 279 if (fd == NULL) |
265 { | 280 { |
266 if ((sock = open (filename, | 281 flags = O_WRONLY | O_CREAT; |
267 startsize > 0 ? O_WRONLY | O_APPEND | O_CREAT: O_WRONLY | O_CREAT, | 282 if (startsize > 0) |
268 S_IRUSR | S_IWUSR)) < 0) | 283 flags |= O_APPEND; |
284 #if defined (_LARGEFILE_SOURCE) | |
285 flags |= O_LARGEFILE; | |
286 #endif | |
287 | |
288 if ((sock = open (filename, flags, S_IRUSR | S_IWUSR)) < 0) | |
269 { | 289 { |
270 request->logging_function (gftp_logging_error, request->user_data, | 290 request->logging_function (gftp_logging_error, request->user_data, |
271 _("Error: Cannot open local file %s: %s\n"), | 291 _("Error: Cannot open local file %s: %s\n"), |
272 filename, g_strerror (errno)); | 292 filename, g_strerror (errno)); |
273 return (-2); | 293 return (-2); |