Ignore:
Timestamp:
Mar 6, 2008, 12:56:42 AM (14 years ago)
Author:
Peter
Message:

fixes #282

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/yat/utility/FileUtil.cc

    r1001 r1207  
    2828#include <cerrno>
    2929#include <iostream>
     30#include <stdexcept>
    3031#include <string>
    3132
     
    5455
    5556    int mode=0;
     57    bool ok = true;
    5658    for (u_int i=0; i<bits.length(); i++)
    5759      switch (bits[i]) {
    58           case 'r':
     60          case 'r':
    5961            mode|=R_OK;
    6062            break;
     
    6567            mode|=X_OK;
    6668            break;
     69          case 'd':
     70            struct stat nodestat;
     71            stat(tryme.c_str(),&nodestat);
     72            if (!S_ISDIR(nodestat.st_mode))
     73              ok = false;
     74            break;
     75          default:
     76            throw std::invalid_argument("FileUtil::permission: "+bits);
    6777      }
    68 
     78    if (!ok)
     79      return -1;
    6980    return access(tryme.c_str(),mode);
    7081  }
Note: See TracChangeset for help on using the changeset viewer.