chxavurlfix.cpp
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:2k
源码类别:

Symbian

开发平台:

C/C++

  1. /*============================================================================*
  2.  *
  3.  * (c) 1995-2002 RealNetworks, Inc. Patents pending. All rights reserved.
  4.  *
  5.  *============================================================================*/
  6.  
  7. // Helix includes...
  8. #include "hxsym_debug.h"
  9. #include "chxavescapedstring.h"
  10. #include "chxavurlfix.h"
  11. CHXAvURLRep CHXAvURLFixup::TryEscapeURL(const CHXAvURLRep& url)
  12. {
  13.     CHXAvURLRep ret = url;
  14.     if (!ret.Valid())
  15.     {
  16.         //
  17.         // Url may be 'invalid' because there are unescaped characters. 
  18.         // 'Fix' it by trying to escape characters in the path and query
  19.         //
  20.         bool modified = false;
  21. // See if the path is invalid
  22. if (!ret.EscapedPath().ValidPath())
  23. {
  24.     // Escape the path
  25.     CHXAvEscapedString newPath;
  26.     newPath.EscapePathStr(ret.EscapedPath().GetEscapedStr());
  27.     
  28.     ret = CHXAvURLRep(ret.Protocol(), ret.Host(), ret.Port(),
  29.    newPath, ret.EscapedQuery());
  30.     modified = true;
  31. }
  32. // See if the query is invalid
  33. if (!ret.EscapedQuery().ValidQuery())
  34. {
  35.     // Escape the query
  36.     CHXAvEscapedString newQuery;
  37.     newQuery.EscapeQueryStr(ret.EscapedQuery().GetEscapedStr());
  38.     
  39.     ret = CHXAvURLRep(ret.Protocol(), ret.Host(), ret.Port(),
  40.    ret.EscapedPath(), newQuery);
  41.     
  42.     modified = true;
  43. }
  44.         if (modified)
  45.         {
  46.             DPRINTF (SYMP_INFO,
  47.      ("CHXAvURLFixup::TryEscapeURL : old = '%s'n",
  48.       (const char*)url.String()));
  49.             DPRINTF (SYMP_INFO,
  50.      ("CHXAvURLFixup::TryEscapeURL : new = '%s'n",
  51.       (const char*)ret.String()));
  52.         }
  53.     }
  54.     return ret;
  55. }