Mercurial > gftp.yaz
comparison lib/gftp.h @ 989:c99b134c6185
[mq]: charset2
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 01 Feb 2010 15:17:58 +0900 |
parents | 63555c9744c2 |
children |
comparison
equal
deleted
inserted
replaced
988:63555c9744c2 | 989:c99b134c6185 |
---|---|
94 | 94 |
95 #include <locale.h> | 95 #include <locale.h> |
96 #ifdef ENABLE_NLS | 96 #ifdef ENABLE_NLS |
97 #include <libintl.h> | 97 #include <libintl.h> |
98 #define _(String) gettext (String) | 98 #define _(String) gettext (String) |
99 #else | 99 #else |
100 #define _(String) String | 100 #define _(String) String |
101 #endif | 101 #endif |
102 #define N_(String) String | 102 #define N_(String) String |
103 | 103 |
104 #ifndef AF_LOCAL | 104 #ifndef AF_LOCAL |
175 #endif | 175 #endif |
176 | 176 |
177 /* Server types (used by FTP protocol from SYST command) */ | 177 /* Server types (used by FTP protocol from SYST command) */ |
178 #define GFTP_DIRTYPE_UNIX 1 | 178 #define GFTP_DIRTYPE_UNIX 1 |
179 #define GFTP_DIRTYPE_EPLF 2 | 179 #define GFTP_DIRTYPE_EPLF 2 |
180 #define GFTP_DIRTYPE_CRAY 3 | 180 #define GFTP_DIRTYPE_CRAY 3 |
181 #define GFTP_DIRTYPE_NOVELL 4 | 181 #define GFTP_DIRTYPE_NOVELL 4 |
182 #define GFTP_DIRTYPE_DOS 5 | 182 #define GFTP_DIRTYPE_DOS 5 |
183 #define GFTP_DIRTYPE_VMS 6 | 183 #define GFTP_DIRTYPE_VMS 6 |
184 #define GFTP_DIRTYPE_OTHER 7 | 184 #define GFTP_DIRTYPE_OTHER 7 |
185 #define GFTP_DIRTYPE_MVS 8 | 185 #define GFTP_DIRTYPE_MVS 8 |
186 | 186 |
187 /* Error types */ | 187 /* Error types */ |
188 #define GFTP_ERETRYABLE -1 /* Temporary failure. The GUI | 188 #define GFTP_ERETRYABLE -1 /* Temporary failure. The GUI |
202 #define BOOKMARKS_FILE BASE_CONF_DIR "/bookmarks" | 202 #define BOOKMARKS_FILE BASE_CONF_DIR "/bookmarks" |
203 #define LOG_FILE BASE_CONF_DIR "/gftp.log" | 203 #define LOG_FILE BASE_CONF_DIR "/gftp.log" |
204 #define MAX_HIST_LEN 10 | 204 #define MAX_HIST_LEN 10 |
205 #define GFTP_URL_USAGE "[[protocol://][user[:pass]@]site[:port][/directory]]" | 205 #define GFTP_URL_USAGE "[[protocol://][user[:pass]@]site[:port][/directory]]" |
206 | 206 |
207 typedef enum gftp_logging_level_tag | 207 typedef enum gftp_logging_level_tag |
208 { | 208 { |
209 gftp_logging_send, | 209 gftp_logging_send, |
210 gftp_logging_recv, | 210 gftp_logging_recv, |
211 gftp_logging_error, | 211 gftp_logging_error, |
212 gftp_logging_misc, | 212 gftp_logging_misc, |
226 #define GFTP_SORT_COL_DATETIME 5 | 226 #define GFTP_SORT_COL_DATETIME 5 |
227 #define GFTP_SORT_COL_ATTRIBS 6 | 227 #define GFTP_SORT_COL_ATTRIBS 6 |
228 | 228 |
229 #define GFTP_IS_SPECIAL_DEVICE(mode) (S_ISBLK (mode) || S_ISCHR (mode)) | 229 #define GFTP_IS_SPECIAL_DEVICE(mode) (S_ISBLK (mode) || S_ISCHR (mode)) |
230 | 230 |
231 struct gftp_file_tag | 231 struct gftp_file_tag |
232 { | 232 { |
233 /*@null@*/ char *file, /* Our filename */ | 233 /*@null@*/ char *file, /* Our filename */ |
234 *user, /* User that owns it */ | 234 *user, /* User that owns it */ |
235 *group, /* Group that owns it */ | 235 *group, /* Group that owns it */ |
236 *destfile; /* Full pathname to the destination for the | 236 *destfile; /* Full pathname to the destination for the |
237 file transfer */ | 237 file transfer */ |
238 | 238 |
239 int fd; /* Already open fd for this file */ | 239 int fd; /* Already open fd for this file */ |
240 /* FIXME - add fd_open function */ | 240 /* FIXME - add fd_open function */ |
241 | 241 |
264 char transfer_action; /* See the GFTP_TRANS_ACTION_* vars above */ | 264 char transfer_action; /* See the GFTP_TRANS_ACTION_* vars above */ |
265 /*@null@*/ void *user_data; | 265 /*@null@*/ void *user_data; |
266 }; | 266 }; |
267 | 267 |
268 | 268 |
269 typedef struct gftp_proxy_hosts_tag | 269 typedef struct gftp_proxy_hosts_tag |
270 { | 270 { |
271 /* FIXME - add IPV6 stuff here */ | 271 /* FIXME - add IPV6 stuff here */ |
272 | 272 |
273 gint32 ipv4_network_address, | 273 gint32 ipv4_network_address, |
274 ipv4_netmask; | 274 ipv4_netmask; |
275 char *domain; | 275 char *domain; |
276 } gftp_proxy_hosts; | 276 } gftp_proxy_hosts; |
277 | 277 |
278 | 278 |
279 /* Note, these numbers must match up to the index number in config_file.c | 279 /* Note, these numbers must match up to the index number in config_file.c |
280 in the declaration of gftp_option_types */ | 280 in the declaration of gftp_option_types */ |
281 typedef enum | 281 typedef enum |
282 { | 282 { |
283 gftp_option_type_text = 0, | 283 gftp_option_type_text = 0, |
284 gftp_option_type_textcombo = 1, | 284 gftp_option_type_textcombo = 1, |
285 gftp_option_type_textcomboedt = 2, | 285 gftp_option_type_textcomboedt = 2, |
286 gftp_option_type_hidetext = 3, | 286 gftp_option_type_hidetext = 3, |
318 { | 318 { |
319 /*@null@*/ char *key, /* variable name */ | 319 /*@null@*/ char *key, /* variable name */ |
320 *description; /* How this field will show up in the dialog */ | 320 *description; /* How this field will show up in the dialog */ |
321 int otype; /* Type of option this is */ | 321 int otype; /* Type of option this is */ |
322 /*@null@*/ void *value; | 322 /*@null@*/ void *value; |
323 /*@null@*/ void *listdata; /* For options that have several different | 323 /*@null@*/ void *listdata; /* For options that have several different |
324 options, this is a list of all the options. | 324 options, this is a list of all the options. |
325 Each option_type that uses this will use this | 325 Each option_type that uses this will use this |
326 field differently */ | 326 field differently */ |
327 int flags; /* See GFTP_CVARS_FLAGS_* above */ | 327 int flags; /* See GFTP_CVARS_FLAGS_* above */ |
328 /*@null@*/ char *comment; /* Comment to write out to the config file */ | 328 /*@null@*/ char *comment; /* Comment to write out to the config file */ |
355 } gftp_textcomboedt_data; | 355 } gftp_textcomboedt_data; |
356 | 356 |
357 | 357 |
358 typedef struct gftp_request_tag gftp_request; | 358 typedef struct gftp_request_tag gftp_request; |
359 | 359 |
360 typedef void (*gftp_logging_func) ( gftp_logging_level level, | 360 typedef void (*gftp_logging_func) ( gftp_logging_level level, |
361 /*@null@*/ gftp_request * request, | 361 /*@null@*/ gftp_request * request, |
362 const char *string, ... ); | 362 const char *string, ... ); |
363 | 363 |
364 #define GFTP_ANONYMOUS_USER "anonymous" | 364 #define GFTP_ANONYMOUS_USER "anonymous" |
365 #define gftp_need_username(request) ((request)->need_username && ((request)->username == NULL || *(request)->username == '\0')) | 365 #define gftp_need_username(request) ((request)->need_username && ((request)->username == NULL || *(request)->username == '\0')) |
366 #define gftp_need_password(request) ((request)->need_password && (request)->username != NULL && *(request)->username != '\0' && strcasecmp ((request)->username, GFTP_ANONYMOUS_USER) != 0 && ((request)->password == NULL || *(request)->password == '\0')) | 366 #define gftp_need_password(request) ((request)->need_password && (request)->username != NULL && *(request)->username != '\0' && strcasecmp ((request)->username, GFTP_ANONYMOUS_USER) != 0 && ((request)->password == NULL || *(request)->password == '\0')) |
367 | 367 |
368 struct gftp_request_tag | 368 struct gftp_request_tag |
369 { | 369 { |
370 int protonum; /* Current number of the protocol this is | 370 int protonum; /* Current number of the protocol this is |
371 set to */ | 371 set to */ |
372 char *hostname, /* Hostname we will connect to */ | 372 char *hostname, /* Hostname we will connect to */ |
373 *username, /* Username for host*/ | 373 *username, /* Username for host*/ |
374 *password, /* Password for host */ | 374 *password, /* Password for host */ |
375 *account, /* Account for host (FTP only) */ | 375 *account, /* Account for host (FTP only) */ |
404 stopable : 1, | 404 stopable : 1, |
405 refreshing : 1, | 405 refreshing : 1, |
406 use_local_encoding : 1; | 406 use_local_encoding : 1; |
407 | 407 |
408 off_t gotbytes; | 408 off_t gotbytes; |
409 | 409 |
410 void *protocol_data; | 410 void *protocol_data; |
411 | 411 |
412 gftp_logging_func logging_function; | 412 gftp_logging_func logging_function; |
413 void *user_data; | 413 void *user_data; |
414 | 414 |
415 int (*init) ( gftp_request * request ); | 415 int (*init) ( gftp_request * request ); |
416 void (*copy_param_options) ( gftp_request * dest_request, | 416 void (*copy_param_options) ( gftp_request * dest_request, |
417 gftp_request * src_request ); | 417 gftp_request * src_request ); |
418 ssize_t (*read_function) ( gftp_request * request, | 418 ssize_t (*read_function) ( gftp_request * request, |
419 void *ptr, | 419 void *ptr, |
420 size_t size, | 420 size_t size, |
421 int fd ); | 421 int fd ); |
422 ssize_t (*write_function) ( gftp_request * request, | 422 ssize_t (*write_function) ( gftp_request * request, |
423 const char *ptr, | 423 const char *ptr, |
424 size_t size, | 424 size_t size, |
425 int fd ); | 425 int fd ); |
426 void (*destroy) ( gftp_request * request ); | 426 void (*destroy) ( gftp_request * request ); |
427 int (*connect) ( gftp_request * request ); | 427 int (*connect) ( gftp_request * request ); |
428 int (*post_connect) ( gftp_request * request ); | 428 int (*post_connect) ( gftp_request * request ); |
429 void (*disconnect) ( gftp_request * request ); | 429 void (*disconnect) ( gftp_request * request ); |
430 off_t (*get_file) ( gftp_request * request, | 430 off_t (*get_file) ( gftp_request * request, |
431 const char *filename, | 431 const char *filename, |
432 off_t startsize ); | 432 off_t startsize ); |
433 int (*put_file) ( gftp_request * request, | 433 int (*put_file) ( gftp_request * request, |
434 const char *filename, | 434 const char *filename, |
435 off_t startsize, | 435 off_t startsize, |
436 off_t totalsize ); | 436 off_t totalsize ); |
437 off_t (*transfer_file) ( gftp_request * fromreq, | 437 off_t (*transfer_file) ( gftp_request * fromreq, |
438 const char *fromfile, | 438 const char *fromfile, |
439 off_t fromsize, | 439 off_t fromsize, |
440 gftp_request * toreq, | 440 gftp_request * toreq, |
441 const char *tofile, | 441 const char *tofile, |
442 off_t tosize ); | 442 off_t tosize ); |
443 ssize_t (*get_next_file_chunk) ( gftp_request * request, | 443 ssize_t (*get_next_file_chunk) ( gftp_request * request, |
444 char *buf, | 444 char *buf, |
445 size_t size ); | 445 size_t size ); |
446 ssize_t (*put_next_file_chunk) ( gftp_request * request, | 446 ssize_t (*put_next_file_chunk) ( gftp_request * request, |
447 char *buf, | 447 char *buf, |
448 size_t size ); | 448 size_t size ); |
449 int (*end_transfer) ( gftp_request * request ); | 449 int (*end_transfer) ( gftp_request * request ); |
450 int (*abort_transfer) ( gftp_request * request ); | 450 int (*abort_transfer) ( gftp_request * request ); |
451 int (*stat_filename) ( gftp_request * request, | 451 int (*stat_filename) ( gftp_request * request, |
452 const char *filename, | 452 const char *filename, |
453 mode_t * mode, | 453 mode_t * mode, |
454 off_t * filesize ); | 454 off_t * filesize ); |
455 int (*list_files) ( gftp_request * request ); | 455 int (*list_files) ( gftp_request * request ); |
456 int (*get_next_file) ( gftp_request * request, | 456 int (*get_next_file) ( gftp_request * request, |
457 gftp_file *fle, | 457 gftp_file *fle, |
458 int fd ); | 458 int fd ); |
459 ssize_t (*get_next_dirlist_line) ( gftp_request * request, | 459 ssize_t (*get_next_dirlist_line) ( gftp_request * request, |
460 int fd, | 460 int fd, |
461 char *buf, | 461 char *buf, |
462 size_t buflen ); | 462 size_t buflen ); |
463 off_t (*get_file_size) ( gftp_request * request, | 463 off_t (*get_file_size) ( gftp_request * request, |
464 const char *filename ); | 464 const char *filename ); |
465 int (*chdir) ( gftp_request * request, | 465 int (*chdir) ( gftp_request * request, |
466 const char *directory ); | 466 const char *directory ); |
467 int (*rmdir) ( gftp_request * request, | 467 int (*rmdir) ( gftp_request * request, |
468 const char *directory ); | 468 const char *directory ); |
469 int (*rmfile) ( gftp_request * request, | 469 int (*rmfile) ( gftp_request * request, |
470 const char *filename ); | 470 const char *filename ); |
471 int (*mkdir) ( gftp_request * request, | 471 int (*mkdir) ( gftp_request * request, |
472 const char *directory ); | 472 const char *directory ); |
473 int (*rename) ( gftp_request * request, | 473 int (*rename) ( gftp_request * request, |
474 const char *oldname, | 474 const char *oldname, |
475 const char *newname ); | 475 const char *newname ); |
476 int (*chmod) ( gftp_request * request, | 476 int (*chmod) ( gftp_request * request, |
477 const char *filename, | 477 const char *filename, |
478 mode_t mode ); | 478 mode_t mode ); |
479 int (*set_file_time) ( gftp_request * request, | 479 int (*set_file_time) ( gftp_request * request, |
480 const char *filename, | 480 const char *filename, |
481 time_t datettime ); | 481 time_t datettime ); |
482 int (*site) ( gftp_request * request, | 482 int (*site) ( gftp_request * request, |
483 int specify_site, | 483 int specify_site, |
484 const char *filename ); | 484 const char *filename ); |
485 int (*parse_url) ( gftp_request * request, | 485 int (*parse_url) ( gftp_request * request, |
486 const char *url ); | 486 const char *url ); |
487 int (*set_config_options) ( gftp_request * request ); | 487 int (*set_config_options) ( gftp_request * request ); |
493 GHashTable * local_options_hash; | 493 GHashTable * local_options_hash; |
494 #ifdef USE_SSL | 494 #ifdef USE_SSL |
495 SSL * ssl; | 495 SSL * ssl; |
496 #endif | 496 #endif |
497 | 497 |
498 #if GLIB_MAJOR_VERSION > 1 | |
499 GIConv iconv_to, iconv_from; | |
500 unsigned int iconv_from_initialized : 1, | |
501 iconv_to_initialized : 1; | |
502 char *iconv_charset; | |
503 #endif | |
504 char *remote_charset; | 498 char *remote_charset; |
505 }; | 499 }; |
506 | 500 |
507 | 501 |
508 typedef struct gftp_transfer_tag | 502 typedef struct gftp_transfer_tag |
522 | 516 |
523 struct timeval starttime, | 517 struct timeval starttime, |
524 lasttime; | 518 lasttime; |
525 | 519 |
526 double kbs; | 520 double kbs; |
527 | 521 |
528 GList * files, | 522 GList * files, |
529 * curfle, | 523 * curfle, |
530 * updfle; | 524 * updfle; |
531 | 525 |
532 long numfiles, | 526 long numfiles, |
536 | 530 |
537 off_t curtrans, /* Current transfered bytes for this file */ | 531 off_t curtrans, /* Current transfered bytes for this file */ |
538 tot_file_trans, /* Total number of bytes in the file being | 532 tot_file_trans, /* Total number of bytes in the file being |
539 transferred */ | 533 transferred */ |
540 curresumed, /* Resumed bytes for this file */ | 534 curresumed, /* Resumed bytes for this file */ |
541 trans_bytes, /* Amount of data transfered for entire | 535 trans_bytes, /* Amount of data transfered for entire |
542 transfer */ | 536 transfer */ |
543 total_bytes, /* Grand total bytes for whole transfer */ | 537 total_bytes, /* Grand total bytes for whole transfer */ |
544 resumed_bytes; /* Grand total of resumed bytes for whole | 538 resumed_bytes; /* Grand total of resumed bytes for whole |
545 transfer */ | 539 transfer */ |
546 | 540 |
547 void * fromwdata, | 541 void * fromwdata, |
548 * towdata; | 542 * towdata; |
549 | 543 |
561 char *msg; | 555 char *msg; |
562 gftp_logging_level type; | 556 gftp_logging_level type; |
563 } gftp_log; | 557 } gftp_log; |
564 | 558 |
565 | 559 |
566 typedef struct supported_gftp_protocols_tag | 560 typedef struct supported_gftp_protocols_tag |
567 { | 561 { |
568 /*@null@*/ char *name; /* Description of protocol */ | 562 /*@null@*/ char *name; /* Description of protocol */ |
569 /*@null@*/ int (*init) (gftp_request * request); /* Init function */ | 563 /*@null@*/ int (*init) (gftp_request * request); /* Init function */ |
570 /*@null@*/ void (*register_options) (void); /* Protocol options */ | 564 /*@null@*/ void (*register_options) (void); /* Protocol options */ |
571 /*@null@*/ char *url_prefix; /* URL Prefix */ | 565 /*@null@*/ char *url_prefix; /* URL Prefix */ |
572 unsigned int default_port; /* Default port */ | 566 unsigned int default_port; /* Default port */ |
573 unsigned int shown : 1, /* Whether this protocol is | 567 unsigned int shown : 1, /* Whether this protocol is |
574 shown or not to the user in | 568 shown or not to the user in |
575 the protocol dropdown box */ | 569 the protocol dropdown box */ |
576 use_threads : 1; /* Whether or not operations in | 570 use_threads : 1; /* Whether or not operations in |
577 this protocol should use | 571 this protocol should use |
578 threads */ | 572 threads */ |
579 } supported_gftp_protocols; | 573 } supported_gftp_protocols; |
580 | 574 |
581 | 575 |
582 typedef struct gftp_bookmarks_tag gftp_bookmarks_var; | 576 typedef struct gftp_bookmarks_tag gftp_bookmarks_var; |
583 | 577 |
584 struct gftp_bookmarks_tag | 578 struct gftp_bookmarks_tag |
585 { | 579 { |
586 char *path, /* Path */ | 580 char *path, /* Path */ |
587 *oldpath, /* Old path name */ | 581 *oldpath, /* Old path name */ |
588 *hostname, /* Our actual internet hostname */ | 582 *hostname, /* Our actual internet hostname */ |
589 *protocol, /* Protocol we will connect through */ | 583 *protocol, /* Protocol we will connect through */ |
638 | 632 |
639 | 633 |
640 /* Global config options. These are defined in options.h */ | 634 /* Global config options. These are defined in options.h */ |
641 /*@null@*/ extern GList * gftp_file_transfers, * gftp_file_transfer_logs, | 635 /*@null@*/ extern GList * gftp_file_transfers, * gftp_file_transfer_logs, |
642 * gftp_options_list; | 636 * gftp_options_list; |
643 /*@null@*/ extern GHashTable * gftp_global_options_htable, * gftp_bookmarks_htable, | 637 /*@null@*/ extern GHashTable * gftp_global_options_htable, * gftp_bookmarks_htable, |
644 * gftp_config_list_htable; | 638 * gftp_config_list_htable; |
645 /*@null@*/ extern gftp_bookmarks_var * gftp_bookmarks; | 639 /*@null@*/ extern gftp_bookmarks_var * gftp_bookmarks; |
646 /*@null@*/ extern FILE * gftp_logfd; | 640 /*@null@*/ extern FILE * gftp_logfd; |
647 extern gftp_config_vars gftp_global_config_vars[]; | 641 extern gftp_config_vars gftp_global_config_vars[]; |
648 extern supported_gftp_protocols gftp_protocols[]; | 642 extern supported_gftp_protocols gftp_protocols[]; |
652 /* This is defined in config_file.c */ | 646 /* This is defined in config_file.c */ |
653 | 647 |
654 extern gftp_option_type_var gftp_option_types[]; | 648 extern gftp_option_type_var gftp_option_types[]; |
655 | 649 |
656 /* cache.c */ | 650 /* cache.c */ |
657 void gftp_generate_cache_description ( gftp_request * request, | 651 void gftp_generate_cache_description ( gftp_request * request, |
658 /*@out@*/ char *description, | 652 /*@out@*/ char *description, |
659 size_t len, | 653 size_t len, |
660 int ignore_directory ); | 654 int ignore_directory ); |
661 | 655 |
662 int gftp_new_cache_entry ( gftp_request * request ); | 656 int gftp_new_cache_entry ( gftp_request * request ); |
663 | 657 |
664 int gftp_find_cache_entry ( gftp_request * request ); | 658 int gftp_find_cache_entry ( gftp_request * request ); |
668 void gftp_delete_cache_entry ( gftp_request * request, | 662 void gftp_delete_cache_entry ( gftp_request * request, |
669 char *descr, | 663 char *descr, |
670 int ignore_directory ); | 664 int ignore_directory ); |
671 | 665 |
672 /* charset-conv.c */ | 666 /* charset-conv.c */ |
673 /*@null@*/ char * gftp_string_to_utf8 ( gftp_request * request, | 667 /*@null@*/ char * gftp_string_to_utf8 ( gftp_request * request, |
674 const char *str, | 668 const char *str, |
675 size_t *dest_len ); | 669 size_t *dest_len ); |
676 | 670 |
677 /*@null@*/ char * gftp_string_from_utf8 ( gftp_request * request, | 671 /*@null@*/ char * gftp_string_from_utf8 ( gftp_request * request, |
678 int force_local, | 672 int force_local, |
679 const char *str, | 673 const char *str, |
680 size_t *dest_len ); | 674 size_t *dest_len ); |
681 | 675 |
682 /*@null@*/ char * gftp_filename_to_utf8 ( gftp_request * request, | 676 /*@null@*/ char * gftp_filename_to_utf8 ( gftp_request * request, |
683 const char *str, | 677 const char *str, |
684 size_t *dest_len ); | 678 size_t *dest_len ); |
685 | 679 |
686 /*@null@*/ char * gftp_filename_from_utf8 ( gftp_request * request, | 680 /*@null@*/ char * gftp_filename_from_utf8 ( gftp_request * request, |
687 const char *str, | 681 const char *str, |
688 size_t *dest_len ); | 682 size_t *dest_len ); |
689 | 683 |
690 /*@null@*/ char * gftp_remote_filename_to_utf8 ( gftp_request * request, | 684 /*@null@*/ char * gftp_remote_filename_to_utf8 ( gftp_request * request, |
691 const char *str, | 685 const char *str, |
692 size_t *dest_len ); | 686 size_t *dest_len ); |
693 | 687 |
694 /*@null@*/ char * gftp_remote_filename_from_utf8 ( gftp_request * request, | 688 /*@null@*/ char * gftp_remote_filename_from_utf8 ( gftp_request * request, |
695 const char *str, | 689 const char *str, |
696 size_t *dest_len ); | 690 size_t *dest_len ); |
697 | 691 |
698 /* config_file.c */ | 692 /* config_file.c */ |
699 int gftp_config_parse_args ( char *str, | 693 int gftp_config_parse_args ( char *str, |
700 int numargs, | 694 int numargs, |
701 int lineno, | 695 int lineno, |
702 /*@out@*/ char **first, | 696 /*@out@*/ char **first, |
703 ... ); | 697 ... ); |
704 | 698 |
705 void gftp_add_bookmark ( gftp_bookmarks_var * newentry ); | 699 void gftp_add_bookmark ( gftp_bookmarks_var * newentry ); |
706 | 700 |
707 void gftp_read_config_file ( char *global_data_path ); | 701 void gftp_read_config_file ( char *global_data_path ); |
712 | 706 |
713 GHashTable * build_bookmarks_hash_table ( gftp_bookmarks_var * entry ); | 707 GHashTable * build_bookmarks_hash_table ( gftp_bookmarks_var * entry ); |
714 | 708 |
715 void print_bookmarks ( gftp_bookmarks_var * bookmarks ); | 709 void print_bookmarks ( gftp_bookmarks_var * bookmarks ); |
716 | 710 |
717 void gftp_lookup_global_option ( const char * key, | 711 void gftp_lookup_global_option ( const char * key, |
718 /*@out@*/ void *value ); | 712 /*@out@*/ void *value ); |
719 | 713 |
720 void gftp_lookup_request_option ( gftp_request * request, | 714 void gftp_lookup_request_option ( gftp_request * request, |
721 const char * key, | 715 const char * key, |
722 /*@out@*/ void *value ); | 716 /*@out@*/ void *value ); |
723 | 717 |
724 | 718 |
725 void gftp_lookup_bookmark_option ( gftp_bookmarks_var * bm, | 719 void gftp_lookup_bookmark_option ( gftp_bookmarks_var * bm, |
726 const char * key, | 720 const char * key, |
727 void *value ); | 721 void *value ); |
728 | 722 |
729 void gftp_set_global_option ( const char * key, | 723 void gftp_set_global_option ( const char * key, |
730 const void *value ); | 724 const void *value ); |
731 | 725 |
732 void gftp_set_request_option ( gftp_request * request, | 726 void gftp_set_request_option ( gftp_request * request, |
733 const char * key, | 727 const char * key, |
734 const void *value ); | 728 const void *value ); |
735 | 729 |
736 void gftp_set_bookmark_option ( gftp_bookmarks_var * bm, | 730 void gftp_set_bookmark_option ( gftp_bookmarks_var * bm, |
737 const char * key, | 731 const char * key, |
738 const void *value ); | 732 const void *value ); |
739 | 733 |
740 void gftp_register_config_vars ( gftp_config_vars *config_vars ); | 734 void gftp_register_config_vars ( gftp_config_vars *config_vars ); |
741 | 735 |
742 void gftp_copy_local_options ( gftp_config_vars ** new_options_vars, | 736 void gftp_copy_local_options ( gftp_config_vars ** new_options_vars, |
743 GHashTable ** new_options_hash, | 737 GHashTable ** new_options_hash, |
744 int *new_num_local_options_vars, | 738 int *new_num_local_options_vars, |
745 gftp_config_vars * orig_options, | 739 gftp_config_vars * orig_options, |
746 int num_local_options_vars ); | 740 int num_local_options_vars ); |
747 | 741 |
754 void gftp_free_proxy_hosts ( GList * proxy_hosts ); | 748 void gftp_free_proxy_hosts ( GList * proxy_hosts ); |
755 | 749 |
756 GList * gftp_copy_proxy_hosts ( GList * proxy_hosts ); | 750 GList * gftp_copy_proxy_hosts ( GList * proxy_hosts ); |
757 | 751 |
758 /* misc.c */ | 752 /* misc.c */ |
759 /*@null@*/ char *insert_commas ( off_t number, | 753 /*@null@*/ char *insert_commas ( off_t number, |
760 char *dest_str, | 754 char *dest_str, |
761 size_t dest_len ); | 755 size_t dest_len ); |
762 | 756 |
763 char *alltrim ( char *str ); | 757 char *alltrim ( char *str ); |
764 | 758 |
765 char *gftp_expand_path ( gftp_request * request, | 759 char *gftp_expand_path ( gftp_request * request, |
766 const char *src ); | 760 const char *src ); |
767 | 761 |
768 void make_nonnull ( char **str ); | 762 void make_nonnull ( char **str ); |
769 | 763 |
770 int gftp_match_filespec ( gftp_request * request, | 764 int gftp_match_filespec ( gftp_request * request, |
771 const char *filename, | 765 const char *filename, |
772 const char *filespec ); | 766 const char *filespec ); |
773 | 767 |
774 int gftp_parse_command_line ( int *argc, | 768 int gftp_parse_command_line ( int *argc, |
775 char ***argv ); | 769 char ***argv ); |
776 | 770 |
788 | 782 |
789 void free_file_list ( GList * filelist ); | 783 void free_file_list ( GList * filelist ); |
790 | 784 |
791 gftp_file * copy_fdata ( gftp_file * fle ); | 785 gftp_file * copy_fdata ( gftp_file * fle ); |
792 | 786 |
793 int compare_request ( gftp_request * request1, | 787 int compare_request ( gftp_request * request1, |
794 gftp_request * request2, | 788 gftp_request * request2, |
795 int compare_dirs ); | 789 int compare_dirs ); |
796 | 790 |
797 gftp_transfer * gftp_tdata_new ( void ); | 791 gftp_transfer * gftp_tdata_new ( void ); |
798 | 792 |
799 void free_tdata ( gftp_transfer * tdata ); | 793 void free_tdata ( gftp_transfer * tdata ); |
800 | 794 |
801 gftp_request * gftp_copy_request ( gftp_request * req ); | 795 gftp_request * gftp_copy_request ( gftp_request * req ); |
802 | 796 |
803 GList * gftp_sort_filelist ( GList * filelist, | 797 GList * gftp_sort_filelist ( GList * filelist, |
804 int column, | 798 int column, |
805 int asds ); | 799 int asds ); |
806 | 800 |
807 char * gftp_gen_ls_string ( gftp_request * request, | 801 char * gftp_gen_ls_string ( gftp_request * request, |
808 gftp_file * fle, | 802 gftp_file * fle, |
809 char *file_prefixstr, | 803 char *file_prefixstr, |
810 char *file_suffixstr ); | 804 char *file_suffixstr ); |
811 | 805 |
812 char * base64_encode ( char *str ); | 806 char * base64_encode ( char *str ); |
813 | 807 |
814 void gftp_free_bookmark ( gftp_bookmarks_var * entry, | 808 void gftp_free_bookmark ( gftp_bookmarks_var * entry, |
815 int free_node ); | 809 int free_node ); |
816 | 810 |
817 void gftp_shutdown ( void ); | 811 void gftp_shutdown ( void ); |
818 | 812 |
819 GList * get_next_selection ( GList * selection, | 813 GList * get_next_selection ( GList * selection, |
820 GList ** list, | 814 GList ** list, |
821 int *curnum ); | 815 int *curnum ); |
822 | 816 |
823 char * gftp_build_path ( gftp_request * request, | 817 char * gftp_build_path ( gftp_request * request, |
824 const char *first_element, | 818 const char *first_element, |
825 ... ); | 819 ... ); |
842 /* parse-dir-listing.c */ | 836 /* parse-dir-listing.c */ |
843 time_t parse_time ( char *str, | 837 time_t parse_time ( char *str, |
844 char **endpos ); | 838 char **endpos ); |
845 | 839 |
846 int gftp_parse_ls ( gftp_request * request, | 840 int gftp_parse_ls ( gftp_request * request, |
847 const char *lsoutput, | 841 const char *lsoutput, |
848 gftp_file *fle, | 842 gftp_file *fle, |
849 int fd ); | 843 int fd ); |
850 | 844 |
851 /* protocols.c */ | 845 /* protocols.c */ |
852 #define GFTP_FTP_NUM 0 | 846 #define GFTP_FTP_NUM 0 |
866 | 860 |
867 int rfc959_init ( gftp_request * request ); | 861 int rfc959_init ( gftp_request * request ); |
868 | 862 |
869 void rfc959_register_module ( void ); | 863 void rfc959_register_module ( void ); |
870 | 864 |
871 int rfc959_get_next_file ( gftp_request * request, | 865 int rfc959_get_next_file ( gftp_request * request, |
872 gftp_file *fle, | 866 gftp_file *fle, |
873 int fd ); | 867 int fd ); |
874 | 868 |
875 int rfc959_connect ( gftp_request * request ); | 869 int rfc959_connect ( gftp_request * request ); |
876 | 870 |
877 int ftps_init ( gftp_request * request ); | 871 int ftps_init ( gftp_request * request ); |
917 | 911 |
918 int gftp_connect ( gftp_request * request ); | 912 int gftp_connect ( gftp_request * request ); |
919 | 913 |
920 void gftp_disconnect ( gftp_request * request ); | 914 void gftp_disconnect ( gftp_request * request ); |
921 | 915 |
922 off_t gftp_get_file ( gftp_request * request, | 916 off_t gftp_get_file ( gftp_request * request, |
923 const char *filename, | 917 const char *filename, |
924 off_t startsize ); | 918 off_t startsize ); |
925 | 919 |
926 int gftp_put_file ( gftp_request * request, | 920 int gftp_put_file ( gftp_request * request, |
927 const char *filename, | 921 const char *filename, |
928 off_t startsize, | 922 off_t startsize, |
929 off_t totalsize ); | 923 off_t totalsize ); |
930 | 924 |
931 off_t gftp_transfer_file ( gftp_request *fromreq, | 925 off_t gftp_transfer_file ( gftp_request *fromreq, |
932 const char *fromfile, | 926 const char *fromfile, |
933 off_t fromsize, | 927 off_t fromsize, |
934 gftp_request *toreq, | 928 gftp_request *toreq, |
935 const char *tofile, | 929 const char *tofile, |
936 off_t tosize ); | 930 off_t tosize ); |
937 | 931 |
938 ssize_t gftp_get_next_file_chunk ( gftp_request * request, | 932 ssize_t gftp_get_next_file_chunk ( gftp_request * request, |
939 char *buf, | 933 char *buf, |
940 size_t size ); | 934 size_t size ); |
941 | 935 |
942 ssize_t gftp_put_next_file_chunk ( gftp_request * request, | 936 ssize_t gftp_put_next_file_chunk ( gftp_request * request, |
943 char *buf, | 937 char *buf, |
944 size_t size ); | 938 size_t size ); |
945 | 939 |
946 int gftp_list_files ( gftp_request * request ); | 940 int gftp_list_files ( gftp_request * request ); |
947 | 941 |
948 int gftp_parse_bookmark ( gftp_request * request, | 942 int gftp_parse_bookmark ( gftp_request * request, |
949 gftp_request * local_request, | 943 gftp_request * local_request, |
950 const char * bookmark, | 944 const char * bookmark, |
951 int *refresh_local ); | 945 int *refresh_local ); |
952 | 946 |
953 int gftp_parse_url ( gftp_request * request, | 947 int gftp_parse_url ( gftp_request * request, |
954 const char *url ); | 948 const char *url ); |
955 | 949 |
956 int gftp_get_next_file ( gftp_request * request, | 950 int gftp_get_next_file ( gftp_request * request, |
957 const char *filespec, | 951 const char *filespec, |
958 gftp_file *fle ); | 952 gftp_file *fle ); |
959 | 953 |
960 int gftp_end_transfer ( gftp_request * request ); | 954 int gftp_end_transfer ( gftp_request * request ); |
961 | 955 |
964 int gftp_stat_filename ( gftp_request * request, | 958 int gftp_stat_filename ( gftp_request * request, |
965 const char *filename, | 959 const char *filename, |
966 mode_t * mode, | 960 mode_t * mode, |
967 off_t * filesize ); | 961 off_t * filesize ); |
968 | 962 |
969 void gftp_set_hostname ( gftp_request * request, | 963 void gftp_set_hostname ( gftp_request * request, |
970 const char *hostname ); | 964 const char *hostname ); |
971 | 965 |
972 void gftp_set_remote_charset (gftp_request * request, | 966 void gftp_set_remote_charset (gftp_request * request, |
973 const char *remote_charset); | 967 const char *remote_charset); |
974 | 968 |
975 void gftp_set_username ( gftp_request * request, | 969 void gftp_set_username ( gftp_request * request, |
976 const char *username ); | 970 const char *username ); |
977 | 971 |
978 void gftp_set_password ( gftp_request * request, | 972 void gftp_set_password ( gftp_request * request, |
979 const char *password ); | 973 const char *password ); |
980 | 974 |
981 void gftp_set_account ( gftp_request * request, | 975 void gftp_set_account ( gftp_request * request, |
982 const char *account ); | 976 const char *account ); |
983 | 977 |
984 int gftp_set_directory ( gftp_request * request, | 978 int gftp_set_directory ( gftp_request * request, |
985 const char *directory ); | 979 const char *directory ); |
986 | 980 |
987 void gftp_set_port ( gftp_request * request, | 981 void gftp_set_port ( gftp_request * request, |
988 unsigned int port ); | 982 unsigned int port ); |
989 | 983 |
990 int gftp_remove_directory ( gftp_request * request, | 984 int gftp_remove_directory ( gftp_request * request, |
991 const char *directory ); | 985 const char *directory ); |
992 | 986 |
993 int gftp_remove_file ( gftp_request * request, | 987 int gftp_remove_file ( gftp_request * request, |
994 const char *file ); | 988 const char *file ); |
995 | 989 |
996 int gftp_make_directory ( gftp_request * request, | 990 int gftp_make_directory ( gftp_request * request, |
997 const char *directory ); | 991 const char *directory ); |
998 | 992 |
999 int gftp_rename_file ( gftp_request * request, | 993 int gftp_rename_file ( gftp_request * request, |
1000 const char *oldname, | 994 const char *oldname, |
1001 const char *newname ); | 995 const char *newname ); |
1002 | 996 |
1003 int gftp_chmod ( gftp_request * request, | 997 int gftp_chmod ( gftp_request * request, |
1004 const char *file, | 998 const char *file, |
1005 mode_t mode ); | 999 mode_t mode ); |
1006 | 1000 |
1007 int gftp_set_file_time ( gftp_request * request, | 1001 int gftp_set_file_time ( gftp_request * request, |
1008 const char *file, | 1002 const char *file, |
1009 time_t datetime ); | 1003 time_t datetime ); |
1010 | 1004 |
1011 int gftp_site_cmd ( gftp_request * request, | 1005 int gftp_site_cmd ( gftp_request * request, |
1012 int specify_site, | 1006 int specify_site, |
1013 const char *command ); | 1007 const char *command ); |
1014 | 1008 |
1015 off_t gftp_get_file_size ( gftp_request * request, | 1009 off_t gftp_get_file_size ( gftp_request * request, |
1016 const char *filename ); | 1010 const char *filename ); |
1017 | 1011 |
1018 void gftp_calc_kbs ( gftp_transfer * tdata, | 1012 void gftp_calc_kbs ( gftp_transfer * tdata, |
1019 ssize_t num_read ); | 1013 ssize_t num_read ); |
1020 | 1014 |
1021 int gftp_get_all_subdirs ( gftp_transfer * transfer, | 1015 int gftp_get_all_subdirs ( gftp_transfer * transfer, |
1022 void (*update_func) | 1016 void (*update_func) |
1023 ( gftp_transfer * transfer )); | 1017 ( gftp_transfer * transfer )); |
1024 | 1018 |
1025 int gftp_set_config_options ( gftp_request * request ); | 1019 int gftp_set_config_options ( gftp_request * request ); |
1026 | 1020 |
1027 void print_file_list ( GList * list ); | 1021 void print_file_list ( GList * list ); |
1028 | 1022 |
1029 void gftp_swap_socks ( gftp_request * dest, | 1023 void gftp_swap_socks ( gftp_request * dest, |
1030 gftp_request * source ); | 1024 gftp_request * source ); |
1031 | 1025 |
1032 void gftp_calc_kbs ( gftp_transfer * tdata, | 1026 void gftp_calc_kbs ( gftp_transfer * tdata, |
1033 ssize_t num_read ); | 1027 ssize_t num_read ); |
1034 | 1028 |
1035 int gftp_get_transfer_status ( gftp_transfer * tdata, | 1029 int gftp_get_transfer_status ( gftp_transfer * tdata, |
1036 ssize_t num_read ); | 1030 ssize_t num_read ); |
1037 | 1031 |
1038 int gftp_fd_open ( gftp_request * request, | 1032 int gftp_fd_open ( gftp_request * request, |
1039 const char *pathname, | 1033 const char *pathname, |
1040 int flags, | 1034 int flags, |
1041 mode_t perms ); | 1035 mode_t perms ); |
1042 | 1036 |
1043 void gftp_setup_startup_directory ( gftp_request * request, | 1037 void gftp_setup_startup_directory ( gftp_request * request, |
1044 const char *option_name ); | 1038 const char *option_name ); |
1064 | 1058 |
1065 int gftp_ssl_session_setup ( gftp_request * request ); | 1059 int gftp_ssl_session_setup ( gftp_request * request ); |
1066 | 1060 |
1067 void gftp_ssl_free ( gftp_request * request ); | 1061 void gftp_ssl_free ( gftp_request * request ); |
1068 | 1062 |
1069 ssize_t gftp_ssl_read ( gftp_request * request, | 1063 ssize_t gftp_ssl_read ( gftp_request * request, |
1070 void *ptr, | 1064 void *ptr, |
1071 size_t size, | 1065 size_t size, |
1072 int fd ); | 1066 int fd ); |
1073 | 1067 |
1074 ssize_t gftp_ssl_write ( gftp_request * request, | 1068 ssize_t gftp_ssl_write ( gftp_request * request, |
1075 const char *ptr, | 1069 const char *ptr, |
1076 size_t size, | 1070 size_t size, |
1077 int fd ); | 1071 int fd ); |
1078 #endif /* USE_SSL */ | 1072 #endif /* USE_SSL */ |
1079 | 1073 |
1080 /* UI dependent functions that must be implemented */ | 1074 /* UI dependent functions that must be implemented */ |
1081 int gftpui_protocol_ask_yes_no ( gftp_request * request, | 1075 int gftpui_protocol_ask_yes_no ( gftp_request * request, |
1090 void gftpui_protocol_update_timeout ( gftp_request * request ); | 1084 void gftpui_protocol_update_timeout ( gftp_request * request ); |
1091 | 1085 |
1092 #endif | 1086 #endif |
1093 | 1087 |
1094 /* socket-connect.c */ | 1088 /* socket-connect.c */ |
1095 int gftp_connect_server ( gftp_request * request, | 1089 int gftp_connect_server ( gftp_request * request, |
1096 char *service, | 1090 char *service, |
1097 char *proxy_hostname, | 1091 char *proxy_hostname, |
1098 unsigned int proxy_port ); | 1092 unsigned int proxy_port ); |
1099 | 1093 |
1100 /* socket-connect-getaddrinfo.c */ | 1094 /* socket-connect-getaddrinfo.c */ |
1119 char *service, | 1113 char *service, |
1120 char *proxy_hostname, | 1114 char *proxy_hostname, |
1121 unsigned int proxy_port ); | 1115 unsigned int proxy_port ); |
1122 | 1116 |
1123 /* sockutils.c */ | 1117 /* sockutils.c */ |
1124 ssize_t gftp_get_line ( gftp_request * request, | 1118 ssize_t gftp_get_line ( gftp_request * request, |
1125 /*@out@*/ gftp_getline_buffer ** rbuf, | 1119 /*@out@*/ gftp_getline_buffer ** rbuf, |
1126 /*@out@*/ char * str, | 1120 /*@out@*/ char * str, |
1127 size_t len, | 1121 size_t len, |
1128 int fd ); | 1122 int fd ); |
1129 | 1123 |
1130 void gftp_free_getline_buffer ( gftp_getline_buffer ** rbuf ); | 1124 void gftp_free_getline_buffer ( gftp_getline_buffer ** rbuf ); |
1131 | 1125 |
1132 ssize_t gftp_fd_read ( gftp_request * request, | 1126 ssize_t gftp_fd_read ( gftp_request * request, |
1133 void *ptr, | 1127 void *ptr, |
1134 size_t size, | 1128 size_t size, |
1135 int fd ); | 1129 int fd ); |
1136 | 1130 |
1137 ssize_t gftp_fd_write ( gftp_request * request, | 1131 ssize_t gftp_fd_write ( gftp_request * request, |
1138 const char *ptr, | 1132 const char *ptr, |
1139 size_t size, | 1133 size_t size, |
1140 int fd ); | 1134 int fd ); |
1141 | 1135 |
1142 ssize_t gftp_writefmt ( gftp_request * request, | 1136 ssize_t gftp_writefmt ( gftp_request * request, |
1143 int fd, | 1137 int fd, |
1144 const char *fmt, | 1138 const char *fmt, |
1145 ... ); | 1139 ... ); |
1146 | 1140 |
1147 int gftp_fd_set_sockblocking ( gftp_request * request, | 1141 int gftp_fd_set_sockblocking ( gftp_request * request, |
1148 int fd, | 1142 int fd, |
1149 int non_blocking ); | 1143 int non_blocking ); |
1150 | 1144 |
1151 struct servent * r_getservbyname ( const char *name, | 1145 struct servent * r_getservbyname ( const char *name, |
1152 const char *proto, | 1146 const char *proto, |
1153 struct servent *result_buf, | 1147 struct servent *result_buf, |