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

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer and/or licensor of the Original Code and owns the copyrights 
  21.  * in the portions it created.  
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. /* Parts of pmatch() are copyright: */
  36. /*-
  37.  * Copyright (c) 1991, 1993
  38.  * The Regents of the University of California.  All rights reserved.
  39.  *
  40.  * This code is derived from software contributed to Berkeley by
  41.  * Kenneth Almquist.
  42.  *
  43.  * Redistribution and use in source and binary forms, with or without
  44.  * modification, are permitted provided that the following conditions
  45.  * are met:
  46.  * 1. Redistributions of source code must retain the above copyright
  47.  *    notice, this list of conditions and the following disclaimer.
  48.  * 2. Redistributions in binary form must reproduce the above copyright
  49.  *    notice, this list of conditions and the following disclaimer in the
  50.  *    documentation and/or other materials provided with the distribution.
  51.  * 3. All advertising materials mentioning features or use of this software
  52.  *    must display the following acknowledgement:
  53.  * This product includes software developed by the University of
  54.  * California, Berkeley and its contributors.
  55.  * 4. Neither the name of the University nor the names of its contributors
  56.  *    may be used to endorse or promote products derived from this software
  57.  *    without specific prior written permission.
  58.  *
  59.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  60.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  61.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  62.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  63.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  64.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  65.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  66.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  67.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  68.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  69.  * SUCH DAMAGE.
  70.  *
  71.  */
  72. #include "hlxclib/stdlib.h"
  73. #include "hlxclib/string.h"
  74. #include "findfile.h"
  75. #include "platform/openwave/opwaveff.h"
  76. COpenwaveFindFile::COpenwaveFindFile (   const char *path,
  77. const char *delimiter,
  78. const char *pattern) : 
  79.     CFindFile (path, delimiter, pattern)
  80. {
  81.     // initialize platform-specific variables 
  82.     //m_dirHandle = NULL;
  83.     //m_dirEntry = NULL;
  84. }
  85. COpenwaveFindFile::~COpenwaveFindFile()
  86. {
  87. //    if (m_dirHandle != NULL)
  88. //    {
  89. //        OS_CloseDirectory();
  90. //    }
  91. }
  92. //
  93. // Open the directory; initialize the directory handle.
  94. // Return FALSE if the directory couldn't be opened.
  95. //
  96. BOOL COpenwaveFindFile::OS_OpenDirectory (const char *dirname)
  97. {
  98.     // don't call this before calling CloseDirectory()!
  99.     //if (m_dirHandle != NULL)
  100. //return FALSE;
  101.     //m_dirHandle = opendir (dirname);
  102.     //return (m_dirHandle == NULL ? FALSE:TRUE);
  103. return FALSE;
  104. }
  105. //
  106. // Get the next file in the directory.  This *does not*
  107. // filter out based on the pattern; every file is returned.
  108. //
  109. char* COpenwaveFindFile::OS_GetNextFile()
  110. {
  111.     //if (!m_dirHandle)
  112. //return NULL;
  113.     //m_dirEntry = readdir (m_dirHandle);
  114.     //if (m_dirEntry != NULL)
  115. //return (m_dirEntry->d_name);
  116.     //else
  117. //return NULL;
  118. return NULL;
  119. }
  120. //
  121. // release the directory
  122. //
  123. void COpenwaveFindFile::OS_CloseDirectory ()
  124. {
  125.     //if (m_dirHandle)
  126. //closedir (m_dirHandle);
  127.     //m_dirHandle = NULL;
  128. }
  129. BOOL COpenwaveFindFile::OS_InitPattern ()
  130. {
  131.     return (TRUE);
  132. }
  133. static int
  134. pmatch(const char* pattern, const char* string)
  135. {
  136.     const char *p, *q;
  137.     char c;
  138.     p = pattern;
  139.     q = string;
  140.     for (;;) {
  141. switch (c = *p++) {
  142. case '':
  143.     goto breakloop;
  144. case '?':
  145.     if (*q++ == '')
  146. return 0;
  147. break;
  148. case '*':
  149.     c = *p;
  150.     if (c != '?' && c != '*' && c != '[') {
  151. while (*q != c) {
  152.     if (*q == '')
  153. return 0;
  154.     q++;
  155. }
  156.     }
  157.     do {
  158. if (pmatch(p, q))
  159.     return 1;
  160.     } while (*q++ != '');
  161. return 0;
  162. case '[': {
  163. const char *endp;
  164. int invert, found;
  165. char chr;
  166. endp = p;
  167. if (*endp == '!')
  168. endp++;
  169. for (;;) {
  170. if (*endp == '')
  171. goto dft; /* no matching ] */
  172. if (*++endp == ']')
  173. break;
  174. }
  175. invert = 0;
  176. if (*p == '!') {
  177. invert++;
  178. p++;
  179. }
  180. found = 0;
  181. chr = *q++;
  182. if (chr == '')
  183. return 0;
  184. c = *p++;
  185. do {
  186.     if (*p == '-' && p[1] != ']') {
  187. p++;
  188. #if 0
  189. if (   collate_range_cmp(chr, c) >= 0
  190.     && collate_range_cmp(chr, *p) <= 0
  191.    )
  192.     found = 1;
  193. #endif
  194. p++;
  195.     } else {
  196. if (chr == c)
  197.     found = 1;
  198.     }
  199. } while ((c = *p++) != ']');
  200. if (found == invert)
  201.     return 0;
  202. break;
  203.     }
  204.     dft:
  205.     default:
  206. if (*q++ != c)
  207.     return 0;
  208.     break;
  209. }
  210.     }
  211. breakloop:
  212.     if (*q != '')
  213. return 0;
  214.     return 1;
  215. }
  216. BOOL COpenwaveFindFile::OS_FileMatchesPattern (const char * fname)
  217. {
  218.     return pmatch(m_pattern, fname);
  219. }
  220. void COpenwaveFindFile::OS_FreePattern ()
  221. {
  222. }