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);