/*
- * Copyright (c) 2000, Red Hat, Inc.
+ * Copyright (c) 2000, 2001, 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
methods known to setup. To add a new method, create a pair of
nio-*.[ch] files and add the logic to NetIO::open here */
-static char *cvsid = "\n%%% $Id$\n";
+#if 0
+static const char *cvsid =
+ "\n%%% $Id$\n";
+#endif
+
+#include "netio.h"
+
+#include "LogSingleton.h"
-#include "win32.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "resource.h"
#include "state.h"
#include "msg.h"
-#include "netio.h"
#include "nio-file.h"
#include "nio-ie5.h"
+#include "nio-http.h"
+#include "nio-ftp.h"
#include "dialog.h"
-#include "port.h"
+int NetIO::net_method;
+char *NetIO::net_proxy_host;
+int NetIO::net_proxy_port;
-NetIO::NetIO (char *Purl)
+char *NetIO::net_user;
+char *NetIO::net_passwd;
+char *NetIO::net_proxy_user;
+char *NetIO::net_proxy_passwd;
+char *NetIO::net_ftp_user;
+char *NetIO::net_ftp_passwd;
+
+NetIO::NetIO (char const *Purl)
+{
+ set_url (Purl);
+}
+
+NetIO::~NetIO ()
+{
+ if (url)
+ delete[] url;
+ if (proto)
+ delete[] proto;
+ if (host)
+ delete[] host;
+ if (path)
+ delete[] path;
+}
+
+void
+NetIO::set_url (char const *Purl)
{
char *bp, *ep, c;
file_size = 0;
- url = _strdup (Purl);
+ url = new char[strlen (Purl) + 1];
+ strcpy (url, Purl);
proto = 0;
host = 0;
port = 0;
}
*ep = 0;
- proto = _strdup (bp);
+ proto = new char [strlen (bp)+1];
+ strcpy (proto, bp);
*ep = ':';
- bp = ep+3;
+ bp = ep + 3;
- ep += strcspn (bp, ":/");
+ ep = bp + strcspn (bp, ":/");
c = *ep;
*ep = 0;
- host = _strdup (bp);
+ host = new char [strlen (bp) + 1];
+ strcpy (host, bp);
*ep = c;
if (*ep == ':')
{
- port = atoi (ep+1);
+ port = atoi (ep + 1);
ep = strchr (ep, '/');
}
if (*ep)
- path = _strdup (ep);
-}
-
-NetIO::~NetIO ()
-{
- if (url)
- free (url);
- if (proto)
- free (proto);
- if (host)
- free (host);
- if (path)
- free (path);
+ {
+ path = new char [strlen (ep)+1];
+ strcpy (path, ep);
+ }
}
int
}
NetIO *
-NetIO::open (char *url)
+NetIO::open (char const *url)
{
NetIO *rv = 0;
- enum {http, ftp, file} proto;
+ enum
+ { http, ftp, file }
+ proto;
if (strncmp (url, "http://", 7) == 0)
proto = http;
else if (strncmp (url, "ftp://", 6) == 0)
rv = new NetIO_File (url);
else if (net_method == IDC_NET_IE5)
rv = new NetIO_IE5 (url);
-#if 0
- else if (net_method == IDC_NET_DIRECT)
- rv = new NetIO_Direct (url);
else if (net_method == IDC_NET_PROXY)
- rv = new NetIO_Proxy (url);
-#endif
+ rv = new NetIO_HTTP (url);
+ else if (net_method == IDC_NET_DIRECT)
+ {
+ switch (proto)
+ {
+ case http:
+ rv = new NetIO_HTTP (url);
+ break;
+ case ftp:
+ rv = new NetIO_FTP (url);
+ break;
+ case file:
+ rv = new NetIO_File (url);
+ break;
+ }
+ }
if (!rv->ok ())
{
check_if_enable_ok (HWND h)
{
int e = 0;
- if (*user && *passwd)
+ if (*user)
e = 1;
EnableWindow (GetDlgItem (h, IDOK), e);
}
{
*user = eget (h, IDC_NET_USER, *user);
*passwd = eget (h, IDC_NET_PASSWD, *passwd);
+ if (! *passwd) {
+ *passwd = new char[1];
+ passwd[0] = '\0';
+ }
}
static BOOL
case IDCANCEL:
EndDialog (h, 1);
+ LogSingleton::GetInstance().exit (1);
break;
}
+ return 0;
}
static BOOL CALLBACK
load_dialog (h);
return FALSE;
case WM_COMMAND:
- return HANDLE_WM_COMMAND (h, wParam, lParam, auth_cmd);
+ auth_cmd (h, LOWORD(wParam), (HWND)lParam, HIWORD(wParam));
+ return 0;
}
return FALSE;
}
static int
-auth_common (HINSTANCE h, int id)
+auth_common (HINSTANCE h, int id, HWND owner)
{
- return DialogBox (h, MAKEINTRESOURCE (id), 0, auth_proc);
+ return DialogBox (h, MAKEINTRESOURCE (id), owner, auth_proc);
}
int
-NetIO::get_auth ()
+NetIO::get_auth (HWND owner)
{
user = &net_user;
passwd = &net_passwd;
- return auth_common (hinstance, IDD_NET_AUTH);
+ return auth_common (hinstance, IDD_NET_AUTH, owner);
}
int
-NetIO::get_proxy_auth ()
+NetIO::get_proxy_auth (HWND owner)
{
user = &net_proxy_user;
passwd = &net_proxy_passwd;
- return auth_common (hinstance, IDD_PROXY_AUTH);
+ return auth_common (hinstance, IDD_PROXY_AUTH, owner);
+}
+
+int
+NetIO::get_ftp_auth (HWND owner)
+{
+ if (net_ftp_user)
+ {
+ delete[] net_ftp_user;
+ net_ftp_user = NULL;
+ }
+ if (net_ftp_passwd)
+ {
+ delete[] net_ftp_passwd;
+ net_ftp_passwd = NULL;
+ }
+ if (!ftp_auth)
+ return IDCANCEL;
+ user = &net_ftp_user;
+ passwd = &net_ftp_passwd;
+ return auth_common (hinstance, IDD_FTP_AUTH, owner);
}