WvStreams
wvglobdiriter.cc
00001 /*
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  *
00005  * Globbing directory iterator.
00006  *
00007  */
00008 
00009 #include "wvglobdiriter.h"
00010 #include "wvglob.h"
00011 
00012 WvGlobDirIter::WvGlobDirIter( WvStringParm dirname, WvStringParm glob_str,
00013                       bool _recurse, bool _skip_mounts, size_t sizeof_stat )
00014     : WvDirIter(dirname, _recurse, _skip_mounts, sizeof_stat), glob(NULL)
00015 {
00016     if (!glob_str.isnull())
00017     {
00018         glob = new WvGlob(glob_str);
00019         if (!glob->isok())
00020         {
00021             delete glob;
00022             glob = NULL;
00023         }
00024     }
00025 }
00026 
00027 WvGlobDirIter::~WvGlobDirIter()
00028 {
00029     if (glob) delete glob;
00030 }
00031 
00032 bool WvGlobDirIter::next()
00033 {
00034     bool result;
00035 
00036     do
00037     {
00038         result = WvDirIter::next();
00039     } while (result && glob && !glob->match(ptr()->relname));
00040 
00041     return result;
00042 }