]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmltag.cpp
wxDialUpManager fixes
[wxWidgets.git] / src / html / htmltag.cpp
index 16e780335f0d50fbe380b56de8288e160650314f..24a45f4ca0b01c2933acb8c50968cd7cf369975d 100644 (file)
@@ -2,6 +2,7 @@
 // Name:        htmltag.cpp
 // Purpose:     wxHtmlTag class (represents single tag)
 // Author:      Vaclav Slavik
+// RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vaclav Slavik
 // Licence:     wxWindows Licence
 /////////////////////////////////////////////////////////////////////////////
@@ -24,7 +25,8 @@
 #include <wx/wx.h>
 #endif
 
-#include <wx/html/htmltag.h>
+#include "wx/html/htmltag.h"
+#include <stdio.h> // for vsscanf
 #include <stdarg.h>
 
 
@@ -63,7 +65,7 @@ wxHtmlTagsCache::wxHtmlTagsCache(const wxString& source)
                 i++;
             }
             dummy[i] = 0;
-            m_Cache[tg].Name = (char*) malloc(i+1);
+            m_Cache[tg].Name = new char[i+1];
             memcpy(m_Cache[tg].Name, dummy, i+1);
 
             while (src[pos] != '>') pos++;
@@ -88,7 +90,7 @@ wxHtmlTagsCache::wxHtmlTagsCache(const wxString& source)
 
     // ok, we're done, now we'll free .Name members of cache - we don't need it anymore:
     for (i = 0; i < m_CacheSize; i++) {
-        free(m_Cache[i].Name);
+        delete[] m_Cache[i].Name;
         m_Cache[i].Name = NULL;
     }
 }
@@ -139,6 +141,10 @@ wxHtmlTag::wxHtmlTag(const wxString& source, int pos, int end_pos, wxHtmlTagsCac
                 while ((i < end_pos) && ((c = source[i++]) != '"')) m_Params += c;
                 m_Params += c;
             }
+            else if (c == '\'') {
+                while ((i < end_pos) && ((c = source[i++]) != '\'')) m_Params += c;
+                m_Params += c;
+            }
         }
    m_Begin = i;
 
@@ -183,6 +189,7 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const
     const char *st = m_Params, *p = par;
     const char *st2, *p2;
     bool comma;
+    char comma_char;
 
     if (*st == 0) return "";
     if (*p == 0) return "";
@@ -191,13 +198,23 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const
             wxString fnd = "";
             st2++; // '=' character
             comma = FALSE;
-            if (!with_commas && (*(st2) == '"')) {st2++; comma = TRUE;}
+           comma_char = '\0';
+            if (!with_commas && (*(st2) == '"')) {
+               st2++;
+               comma = TRUE; 
+               comma_char = '"';
+           }
+           else if (!with_commas && (*(st2) == '\'')) {
+               st2++; 
+               comma = TRUE;
+               comma_char = '\'';
+           }
             while (*st2 != 0) {
-                if (*st2 == '"') comma = !comma;
+                if (comma && *st2 == comma_char) comma = FALSE;
                 else if ((*st2 == ' ') && (!comma)) break;
                 fnd += (*(st2++));
             }
-            if (!with_commas && (*(st2-1) == '"')) fnd.RemoveLast();
+            if (!with_commas && (*(st2-1) == comma_char)) fnd.RemoveLast();
             return fnd;
         }
         if (*st2 == 0) return "";
@@ -211,6 +228,10 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const
                     st2++;
                     while (*st2 != '"') st2++;
                 }
+                else if (*st2 == '\'') {
+                    st2++;
+                    while (*st2 != '\'') st2++;
+                }
                 st2++;
             }
         }
@@ -219,30 +240,10 @@ wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const
 
 
 
-void wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const
+int wxHtmlTag::ScanParam(const wxString& par, char *format, void *param) const
 {
-    va_list argptr;
     wxString parval = GetParam(par);
-
-    va_start(argptr, format);
-
-#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__VISUALC__)
-    sscanf((const char*)parval, format, va_arg(argptr, void *));
-#else
-    vsscanf((const char*)parval, format, argptr);
-#endif
-
-/*
-        --- vsscanf is not defined under Cygwin or Mingw32 or M$ Visual C++ environment
-            if this module doesn't compile with your compiler,
-            modify the def statement and let me know. Thanks...
-        
-            So far wxHtml functions are scanning only _one_ value
-            so I workarounded this by supposing that there is only
-            one ...-parameter 
-*/
-
-    va_end(argptr);
+    return sscanf((const char*)parval, format, param);
 }
 
-#endif
\ No newline at end of file
+#endif