//# DOos.h: Functions used to implement the DO functionality //# Copyright (C) 1999,2000,2001 //# Associated Universities, Inc. Washington DC, USA. //# //# This library is free software; you can redistribute it and/or modify it //# under the terms of the GNU Library General Public License as published by //# the Free Software Foundation; either version 2 of the License, or (at your //# option) any later version. //# //# This library is distributed in the hope that it will be useful, but WITHOUT //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public //# License for more details. //# //# You should have received a copy of the GNU Library General Public License //# along with this library; if not, write to the Free Software Foundation, //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. //# //# Correspondence concerning AIPS++ should be addressed as follows: //# Internet email: aips2-request@nrao.edu. //# Postal address: AIPS++ Project Office //# National Radio Astronomy Observatory //# 520 Edgemont Road //# Charlottesville, VA 22903-2475 USA //# //# //# $Id$ #ifndef CASA_DOOS_H #define CASA_DOOS_H //# Includes #include #include namespace casacore { //# NAMESPACE CASACORE - BEGIN //# Forward Declarations class String; // // DO for accessing os-specific functions // // // // // //
  • OS // // // // // This class serves as the connection between the OS module and a tasking // interface in Glish or Python. // It is meant for access to OS-specific functions, in // particular file handling. // // // // // // //
  • AipsError if AIPSPATH or HOME is not defined // // //
  • Check for feasable extensions // class DOos { public: // Are the given path names valid? // I.e. does a file with the given name exist or can it be created? static Vector isValidPathName (const Vector& pathName); // Do the given files exist? // If follow is False, symbolic links are not followed. static Vector fileExists (const Vector& fileName, Bool follow = True); // Give the type of the given files. static Vector fileType (const Vector& fileName, Bool follow = True); // Give all file names in the directory matching the given pattern // and file types. //
    The pattern can be a string like the filename pattern given in // a shell (e.g. '*.cc'). If the string is empty, all files are taken // into account. //
    Filetypes is a string determining which file types will be selected. // Each character in the string determines a file type. They are: //
    //
    r
    regular file //
    d
    directory //
    s
    symbolic link //
    R
    readable file //
    W
    writable file //
    X
    executable file //
    // The all flag determines if file names starting with a . will also // be selected. static Vector fileNames (const String& directoryName, const String& fileNamePattern, const String& fileTypes, Bool all = False, Bool follow = True); // Make directories. It throws an exception if a file with that // name already exists. static void makeDirectory (const Vector& directoryNames, Bool makeParent = False); // Return the full absolute names for the given names. static Vector fullName (const Vector& fileName); // Return the full directory names of the given files. static Vector dirName (const Vector& fileName); // Return the base names of the given files. static Vector baseName (const Vector& fileName); // Get the time of the given files. // whichTime determines which time to return: //
    1 = time of last access //
    2 = time of last modification //
    3 = time of last status change static Vector fileTime (const Vector& fileName, Int whichTime = 1, Bool follow = True); // Return the total size (in bytes) for each file or directory given. // For a directory the size of all files (recursively) in it is given. // If follow is False, symbolic links are not followed. // static Vector totalSize (const Vector& fileName, Bool follow = True); static Double totalSize (const String& fileName, Bool follow = True); // // Return the total size on the devices the given directories are on. // If follow is False, symbolic links are not followed. static Vector freeSpace (const Vector& fileName, Bool follow = True); // Copy the file (or directory recursively). // If from is a symbolic link and follow is False, only the // symbolic link is copied. static void copy (const String& to, const String& from, Bool overwrite = True, Bool follow = True); // Move the file or directory. // If from is a symbolic link and follow is False, only the // symbolic link is moved. static void move (const String& to, const String& from, Bool overwrite = True, Bool follow = True); // Remove the files (or directories recursively). // If fileName is a symbolic link and follow is False, only the // symbolic link is removed. // static void remove (const String& fileName, Bool recursive, Bool mustExist = True, Bool follow = True); static void remove (const Vector& fileNames, Bool recursive, Bool mustExist = True, Bool follow = True); // // Tell if a table is used or locked by another process. // It returns a vector containing 3 integers. // The first one tells if the table is in use or locked. // See LockFile\::showLock for details. // The second one gives the pid of the process using/locking the table. // The third one tells if the table is permanently locked (0 = not). static Vector lockInfo (const String& tableName); }; } //# NAMESPACE CASACORE - END #endif