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

Diff for /pegasus/src/Pegasus/Common/Dir.h between version 1.3 and 1.35.8.1

version 1.3, 2001/04/25 22:20:55 version 1.35.8.1, 2013/06/03 22:35:12
Line 1 
Line 1 
 //%/////////////////////////////////////////////////////////////////////////////  //%LICENSE////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM  // Licensed to The Open Group (TOG) under one or more contributor license
   // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
   // this work for additional information regarding copyright ownership.
   // Each contributor licenses this file to you under the OpenPegasus Open
   // Source License; you may not use this file except in compliance with the
   // License.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
Line 9 
Line 14 
 // and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
 // Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
 // //
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  // The above copyright notice and this permission notice shall be included
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  // in all copies or substantial portions of the Software.
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL  
 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING  
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER  
 // DEALINGS IN THE SOFTWARE.  
 //  
 //==============================================================================  
 // //
 // Author: Mike Brasher (mbrasher@bmc.com)  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // //
 // Modified By:  //////////////////////////////////////////////////////////////////////////
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 30 
Line 34 
  
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
 #include <Pegasus/Common/String.h> #include <Pegasus/Common/String.h>
 #include <Pegasus/Common/Exception.h>  #include <Pegasus/Common/InternalException.h>
   #include <Pegasus/Common/Linkage.h>
   #include <Pegasus/Common/AutoPtr.h>
   
   #if defined(PEGASUS_OS_SOLARIS)
   # include <sys/param.h>
   #endif
   
   #if defined(PEGASUS_OS_TYPE_WINDOWS)
   # include <io.h>
   #else // if defined(PEGASUS_OS_TYPE_UNIX) || defined (PEGASUS_OS_VMS)
   # include <dirent.h>
   #endif
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 struct DirRep;  #if defined(PEGASUS_OS_TYPE_WINDOWS)
   
   typedef struct
   {
   # if _MSC_VER < 1300
       long file;
   # else
       intptr_t file;
   # endif
       struct _finddata_t findData;
   } DirRep;
   
   #else // if defined(PEGASUS_OS_TYPE_UNIX) || defined (PEGASUS_OS_VMS)
   
   struct DirRep
   {
       DIR* dir;
       struct dirent* entry;
   
   # ifdef PEGASUS_OS_SOLARIS
   private:
       char buf[sizeof(dirent) + MAXNAMELEN];
   public:
       struct dirent& buffer;
       inline DirRep()
           : buffer(*reinterpret_cast<struct dirent *>(buf))
       { }
   # else /* ifdef PEGASUS_OS_SOLARIS */
       struct dirent buffer;
   # endif /* ifdef PEGASUS_OS_SOLARIS */
   };
   #endif
  
 /**  /** The Dir class provides a platform independent way of iterating the
     The Dir class provides a platform independent way of iterating the  
     files in a directory.     files in a directory.
 */ */
 class PEGASUS_COMMON_LINKAGE Dir class PEGASUS_COMMON_LINKAGE Dir
 { {
 public: public:
  
     /** Start this iterator class on the given path.      /** Starts this iterator class on the given path.
         @param String path is the path to the target directory         @param String path is the path to the target directory
         @return         @return
         @exception Exception "CannotOpenDirectory thrown if the directory cannot          @exception throws CannotOpenDirectory if invalid directory.
         be opened.  
         <pre>         <pre>
         Example builds a String array of file names from current directory          char* path = "."
             char* path = "./"  
             Array<String> fileList;  
             try             try
             {             {
                for (Dir dir(path); dir.more(); dir.next())                for (Dir dir(path); dir.more(); dir.next())
                {                {
                    String name = dir.getName();                 cout << "name: " << dir.getName() << endl;
                    if (String::equal(name, ".") || String::equal(name, ".."))  
                        continue;  
                    paths.append(name);  
                }                }
                return true;  
             }             }
             catch(CannotOpenDirectory&)             catch(CannotOpenDirectory&)
             {             {
                return false;             // Error!
             }             }
         </pre>         </pre>
     */     */
     Dir(const String& path);     Dir(const String& path);
  
     /// Release any iterator resources.      /** Release any iterator resources. */
     ~Dir();     ~Dir();
  
     /// Return true if there are more file names to iterator.      /** Return true if there are more file names to iterator. */
     Boolean more() const { return _more; }     Boolean more() const { return _more; }
  
     /** Return the current file name:  
     @return Returns a C string pointer to the current filename.      /** Returns the current file name. */
     */  
     const char* getName() const;     const char* getName() const;
  
     /// Advance the iterator:      /** Advance to next file in directory. */
     void next();     void next();
  
 private: private:
  
     Boolean _more;     Boolean _more;
     Boolean _isValid;      String _path;
     DirRep* _rep;      DirRep _dirRep;
 }; };
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.3  
changed lines
  Added in v.1.35.8.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2