]> cygwin.com Git - cygwin-apps/setup.git/blobdiff - netio.cc
2007-02-17 Brian Dessent <brian@dessent.net>
[cygwin-apps/setup.git] / netio.cc
index 8791be41406d13be45cd5e006e995c04019f5a21..37c3a4ed496198ab875b708d0d2f1b49ccccd6c0 100644 (file)
--- a/netio.cc
+++ b/netio.cc
@@ -1,5 +1,5 @@
 /*
- * 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>
@@ -27,19 +33,48 @@ static char *cvsid = "\n%%% $Id$\n";
 #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;
@@ -54,36 +89,29 @@ NetIO::NetIO (char *Purl)
     }
 
   *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
@@ -99,10 +127,12 @@ NetIO::read (char *buf, int nbytes)
 }
 
 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)
@@ -114,12 +144,23 @@ NetIO::open (char *url)
     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 ())
     {
@@ -138,7 +179,7 @@ static void
 check_if_enable_ok (HWND h)
 {
   int e = 0;
-  if (*user && *passwd)
+  if (*user)
     e = 1;
   EnableWindow (GetDlgItem (h, IDOK), e);
 }
@@ -158,6 +199,10 @@ save_dialog (HWND h)
 {
   *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
@@ -182,8 +227,10 @@ auth_cmd (HWND h, int id, HWND hwndctl, UINT code)
 
     case IDCANCEL:
       EndDialog (h, 1);
+      LogSingleton::GetInstance().exit (1);
       break;
     }
+  return 0;
 }
 
 static BOOL CALLBACK
@@ -195,29 +242,50 @@ auth_proc (HWND h, UINT message, WPARAM wParam, LPARAM lParam)
       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);
 }
This page took 0.029252 seconds and 5 git commands to generate.