(file) Return to DirVms.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

 1 carson.hovey 1.2 //%2005////////////////////////////////////////////////////////////////////////
 2 gs.keenan    1.1 //
 3                  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 4                  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
 5                  // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
 6                  // IBM Corp.; EMC Corporation, The Open Group.
 7                  // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
 8                  // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 9 carson.hovey 1.2 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10                  // EMC Corporation; VERITAS Software Corporation; The Open Group.
11 gs.keenan    1.1 //
12                  // Permission is hereby granted, free of charge, to any person obtaining a copy
13                  // of this software and associated documentation files (the "Software"), to
14                  // deal in the Software without restriction, including without limitation the
15                  // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16                  // sell copies of the Software, and to permit persons to whom the Software is
17                  // furnished to do so, subject to the following conditions:
18                  // 
19                  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
20                  // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
21                  // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
22                  // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
23                  // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24                  // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25                  // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26                  // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27                  //
28                  //==============================================================================
29                  //
30                  // Author: Mike Brasher (mbrasher@bmc.com)
31                  //
32 gs.keenan    1.1 // Modified By: Sean Keenan (sean.keenan@hp.com)
33                  //
34                  //%/////////////////////////////////////////////////////////////////////////////
35                  
36                  #include "Dir.h"
37                  #include "InternalException.h"
38                  
39                  #include <iostream>
40                  
41                  
42                  PEGASUS_NAMESPACE_BEGIN
43                  
44                  // Clone the string to a plain old C-String and null out
45                  // trailing slash (if any).
46                  
47                  static CString _clonePath(const String& path)
48                  {
49                      String clone = path;
50                  
51                      if (clone.size() && clone[clone.size()-1] == '/')
52                          clone.remove(clone.size()-1);
53 gs.keenan    1.1 
54                      return clone.getCString();
55                  }
56                  
57                  Dir::Dir(const String& path)
58                      : _path(path)
59                  {
60                      _dirRep.dir = opendir(_clonePath(_path));
61                      if (_dirRep.dir)
62                      {
63                  	_dirRep.entry = readdir(_dirRep.dir);
64                  	_more = _dirRep.entry != NULL;
65                      }
66                      else
67                      {
68                  	_more = false;
69                  	throw CannotOpenDirectory(_path);
70                      }
71                  }
72                  
73                  Dir::~Dir()
74 gs.keenan    1.1 {
75                      if (_dirRep.dir)
76                  	closedir(_dirRep.dir);
77                  }
78                  
79                  const char* Dir::getName() const
80                  {
81                      return _more ? _dirRep.entry->d_name : "";
82                  }
83                  
84                  void Dir::next()
85                  {
86                      if (_more)
87                      {
88                  	_dirRep.entry = readdir(_dirRep.dir);
89                  	_more = _dirRep.entry != NULL;
90                      }
91                  }
92                  
93                  PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2