Mercurial > hg > xemacs-beta
view netinstall/nio-ftp.cc @ 964:8d610ea37af8
[xemacs-hg @ 2002-08-16 08:15:18 by michaels]
2002-08-13 David Bush <David.Bush@intel.com>
* device-msw.c: Correct initialization list for devmode_description
Add dumpable flag to msprinter-settings for USE_KKCC
* dialog-msw.c: Add dumpable flag to mswindows-dialog-id for USE_KKCC
* event-msw.c (mswindows_enqueue_misc_user_event): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (mswindows_enqueue_magic_event): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (mswindows_enqueue_process_event): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (mswindows_enqueue_mouse_button_event): Reorder
event setup so event type is set first to support USE_KKCC.
For USE_KKCC use mutator macros to set event parameters
* event-msw.c (mswindows_enqueue_keypress_event): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (mswindows_dequeue_dispatch_event): With USE_KKCC
use accessor to get and mutator macros to set event parameters
* event-msw.c (mswindows_cancel_dispatch_event): With USE_KKCC
use accessor macros to get event parameters
* event-msw.c (mswindows_wm_timer_callback): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (mswindows_dde_callback): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (mswindows_wnd_proc): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (emacs_mswindows_remove_timeout): With USE_KKCC
use mutator macros to set event parameters
* event-msw.c (emacs_mswindows_format_magic_event): With USE_KKCC
use accessor macro to access magic event type
* event-msw.c (emacs_mswindows_compare_magic_event): With USE_KKCC
use accessor macro to access magic event type
* event-msw.c (emacs_mswindows_hash_magic_event): With USE_KKCC
use accessor macro to access magic event type
* event-msw.c (emacs_mswindows_handle_magic_event): With USE_KKCC
use accessor macro to access magic event type and event data
* event-msw.c (emacs_mswindows_quit_p): With USE_KKCC use event
accessor and mutator macros to get/set event parameters
* gui-msw.c (mswindows_handle_gui_wm_command): For USE_KKCC
use mutator macros to set event parameters. Make the event
data type match the event type.
* menubar-msw.c (mswindows_popup_menu): With USE_KKCC use
accessor macros to extract button position
author | michaels |
---|---|
date | Fri, 16 Aug 2002 08:15:42 +0000 |
parents | 42a8626b741e |
children |
line wrap: on
line source
/* * Copyright (c) 2000, Red Hat, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * A copy of the GNU General Public License can be found at * http://www.gnu.org/ * * Written by DJ Delorie <dj@cygnus.com> * */ /* This file is responsible for implementing all direct FTP protocol channels. It is intentionally simplistic. */ #include "win32.h" #include "winsock.h" #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include "resource.h" #include "state.h" #include "simpsock.h" #include "log.h" #include "netio.h" #include "nio-ftp.h" static SimpleSocket *cmd = 0; static char *cmd_host = 0; static int cmd_port = 0; static char *last_line; static int ftp_line (SimpleSocket *s) { do { last_line = s->gets (); log (LOG_BABBLE, "ftp > %s", last_line); } while (last_line && (!isdigit (last_line[0]) || last_line[3] != ' ')); return atoi (last_line ?: "0"); } NetIO_FTP::NetIO_FTP (char *Purl) : NetIO (Purl) { s = 0; int code; if (port == 0) port = 21; if (cmd_host && strcmp (host, cmd_host) != 0 || port != cmd_port) { if (cmd) cmd->printf ("QUIT\r\n"); delete cmd; free (cmd_host); cmd = 0; cmd_host = 0; } if (cmd == 0) { SimpleSocket *c = new SimpleSocket (host, port); code = ftp_line (c); c->printf ("USER anonymous\r\n"); code = ftp_line (c); if (code == 331) { c->printf ("PASS xemacs-setup@\r\n"); code = ftp_line (c); } if (code < 200 || code >= 300) { delete c; return; } cmd = c; cmd_host = _strdup (host); cmd_port = port; cmd->printf ("TYPE I\r\n"); code = ftp_line (cmd); } cmd->printf ("PASV\r\n"); do { code = ftp_line (cmd); } while (code == 226); /* previous RETR */ if (code != 227) return; char *paren = strchr (last_line, '('); if (!paren) return; int i1, i2, i3, i4, p1, p2; sscanf (paren+1, "%d,%d,%d,%d,%d,%d", &i1, &i2, &i3, &i4, &p1, &p2); char tmp[20]; sprintf (tmp, "%d.%d.%d.%d", i1, i2, i3, i4); s = new SimpleSocket (tmp, p1*256 + p2); cmd->printf ("RETR %s\r\n", path); code = ftp_line (cmd); if (code != 150) { delete s; s = 0; return; } } NetIO_FTP::~NetIO_FTP () { if (s) delete s; } int NetIO_FTP::ok () { if (s) return 1; return 0; } int NetIO_FTP::read (char *buf, int nbytes) { if (!s) return 0; return s->read (buf, nbytes); }