Mercurial > hg > xemacs-beta
view netinstall/nio-ftp.cc @ 5139:a48ef26d87ee
Clean up prototypes for Lisp variables/symbols. Put decls for them with
the other stuff related to the file they're in. In the process, fix a few
places with incorrect initialization of symbols and variables.
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-03-12 Ben Wing <ben@xemacs.org>
* lisp.h:
* lisp.h (redo-symbols): Removed.
Put the Lisp variables and symbols where they belong, with other
stuff related to the file they're in.
* event-Xt.c (THIS_IS_X):
* event-Xt.c (syms_of_event_Xt):
* event-Xt.c (reinit_vars_of_event_Xt):
* event-gtk.c:
* event-gtk.c (syms_of_event_gtk):
* event-gtk.c (reinit_vars_of_event_gtk):
* event-stream.c:
* event-stream.c (syms_of_event_stream):
* event-stream.c (reinit_vars_of_event_stream):
* events.c (reinit_vars_of_events):
* events.c (vars_of_events):
`sans-modifiers' was defsymbol'ed more than once. Move it to
events-stream.c. `self-insert-command' was defsymbol'ed more than once.
Vevent_resource should be staticpro_nodump()ed as it's declared in
a reinit_*() method.
* lread.c (vars_of_lread):
Vfile_domain wasn't staticpro'ed.
* minibuf.c:
* minibuf.c (reinit_complex_vars_of_minibuf):
Vminibuffer_zero and Vecho_area_buffer weren't staticpro'ed.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Fri, 12 Mar 2010 20:23:50 -0600 |
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); }