Changeset 592 for CMT/HEAD


Ignore:
Timestamp:
Nov 30, 2011, 5:27:20 PM (12 years ago)
Author:
rybkin
Message:

See C.L. 469

Location:
CMT/HEAD
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • CMT/HEAD/ChangeLog

    r591 r592  
     12011-11-30    <rybkin@lal.in2p3.fr> 469
     2
     3        * source/cmt_system.cxx: In class CmtSystem functions, check return value
     4        of system functions getcwd, chdir, stat, unlink, symlink, rmdir, mkdir,
     5        tmpnam, putenv, as well as of cmt_string class read function and propagate
     6        it via return value, or via setting error, and/or by printing error message
     7        * mgr/fragments/dependencies: Remove dependencies Makefile (and stamps)
     8        for constituent clean target
     9       
    1102011-11-29    <rybkin@lal.in2p3.fr> 468
    211
  • CMT/HEAD/mgr/fragments/dependencies

    r590 r592  
    1111endif
    1212endif
     13
     14${CONSTITUENT}clean ::
     15        $(cleanup_silent) \rm -rf $(bin)${CONSTITUENT}_deps $(bin)${CONSTITUENT}_dependencies.make
    1316#-- end of dependencies -------------------
  • CMT/HEAD/source/cmt_system.cxx

    r588 r592  
    5656  char dir[PATH_MAX];
    5757  //  char dir[256];
    58   getcwd (dir, sizeof (dir));
     58  if (NULL == ::getcwd (dir, sizeof (dir)))
     59    {
     60      perror ("getcwd failure");
     61      return NULL;
     62    }
    5963  strcpy ((char*) name, dir);
    6064  return ((char*) name);
     
    7276  char buffer[PATH_MAX] = "";
    7377  //  char buffer[256] = "";
    74   char* ptr = 0;
     78  //  char* ptr = 0;
    7579  char* pwd_env = 0;
    7680
     
    8589  else
    8690    {
    87       ptr = getcwd (buffer, sizeof (buffer));
     91      if (NULL == ::getcwd (buffer, sizeof (buffer)))
     92        {
     93          perror ("getcwd failure");
     94          static const cmt_string empty;
     95          return empty;
     96        }
    8897    }
    8998
     
    100109    {
    101110      cmt_string d = CmtSystem::pwd ();
     111      if (0 == d.size ()) return false;
    102112      d += file_separator ();
    103113      d += dir;
     
    116126  compress_path (s_dir);
    117127
    118   if (chdir (s_dir.c_str ()) == 0)
    119     {
    120       putenv ("PWD", s_dir);
    121       return (true);
    122     }
    123 
     128  if (::chdir (s_dir.c_str ()) == 0)
     129    {
     130      if (putenv ("PWD", s_dir))
     131        return (true);
     132      else
     133        return (false);
     134    }
     135  else
     136    {
     137      if (errno != ENOENT
     138#ifndef WIN32
     139          && errno != ENOTDIR
     140#endif
     141          )
     142        perror ("chdir failure: " + s_dir);
     143      return (false);
     144    }
    124145  return (false);
    125146}
     
    259280{
    260281  cmt_string here = CmtSystem::pwd ();
     282  if (0 == here.size ()) return false;
    261283  if  (test_directory(path))
    262284    {
    263       CmtSystem::cd (path);
     285      if (!CmtSystem::cd (path)) return false;
    264286      result = CmtSystem::pwd ();
    265       CmtSystem::cd (here);
     287      if (0 == result.size ()) return false;
     288      if (!CmtSystem::cd (here))
     289        {
     290          result.erase (0);
     291          return false;
     292        }
    266293      return true;
    267294    }
    268295  return false;
     296}
     297
     298//--------------------------------------------------
     299static cmt_string get_full_path (const cmt_string& name)
     300{
     301  cmt_string path;
     302  if (CmtSystem::absolute_path (name)) return name;
     303  else
     304    {
     305      char buffer[PATH_MAX];
     306      if (NULL == ::getcwd (buffer, sizeof (buffer)))
     307        {
     308          perror ("getcwd failure");
     309          path = name;
     310        }
     311      else
     312        {
     313          path += buffer;
     314          path += CmtSystem::file_separator ();
     315          path += name;
     316        }
     317    }
     318  return path;
    269319}
    270320
     
    275325    {
    276326      cmt_string here = CmtSystem::pwd ();
    277       CmtSystem::cd (path);
     327      if (0 == here.size ()) return false;
     328      if (!CmtSystem::cd (path)) return false;
    278329      //
    279330      char buffer[PATH_MAX] = "";
    280331      //      char buffer[256] = "";
    281       char* ptr = 0;
    282       ptr = getcwd (buffer, sizeof (buffer));
     332      if (NULL == ::getcwd (buffer, sizeof (buffer)))
     333        {
     334          perror ("getcwd failure: " + get_full_path (path));
     335          return false;
     336        }
     337      if (!CmtSystem::cd (here)) return false;
    283338      const char* t = &buffer[0];
    284339      result = t;
    285340      //      cerr << "realpath_> path: " << path << " result: " << result << endl;
    286341      //
    287       CmtSystem::cd (here);
    288342      return true;
    289343    }
     
    347401  int status;
    348402
    349   status = stat (name.c_str (), &file_stat);
     403  status = ::stat (name.c_str (), &file_stat);
    350404
    351405  //cerr << "status(stat) for " << name << " : " << status << " st_mode=" << file_stat.st_mode << endl;
     
    364418  else
    365419    {
     420      if (errno != ENOENT)
     421        {
     422          perror ("stat failure: " + get_full_path (name));
     423          CmtError::set (CmtError::file_access_error, get_full_path (name));
     424        }
    366425      return (false);
    367426    }
     
    374433  int status;
    375434
    376   status = stat (name.c_str (), &file_stat);
     435  status = ::stat (name.c_str (), &file_stat);
    377436
    378437  if (status == 0)
     
    389448  else
    390449    {
     450      if (errno != ENOENT)
     451        {
     452          perror ("stat failure: " + get_full_path (name));
     453          CmtError::set (CmtError::file_access_error, get_full_path (name));
     454        }
    391455      return (false);
    392456    }
     
    412476  else
    413477    {
     478      if (errno != ENOENT)
     479        {
     480          perror ("stat failure: " + get_full_path (name1));
     481          CmtError::set (CmtError::file_access_error, get_full_path (name1));
     482        }
    414483      return (false);
    415484    }
     
    426495  else
    427496    {
     497      if (errno != ENOENT)
     498        {
     499          perror ("stat failure: " + get_full_path (name2));
     500          CmtError::set (CmtError::file_access_error, get_full_path (name2));
     501        }
    428502      return (false);
    429503    }
     
    437511  static cmt_string s2;
    438512
    439   s1.read (name1);
    440   s2.read (name2);
     513  if (!s1.read (name1))
     514    {
     515      CmtError::set (CmtError::file_access_error, name1);
     516      return false;
     517    }
     518  if (!s2.read (name2))
     519    {
     520      CmtError::set (CmtError::file_access_error, name2);
     521      return false;
     522    }
    441523
    442524  return ((s1 == s2));
     
    453535    {
    454536      static cmt_string s;
    455       s.read (name);
     537      if (!s.read (name))
     538        {
     539          CmtError::set (CmtError::file_access_error, name);
     540          return false;
     541        }
    456542      //unlink  (name);           
    457543      FILE* f = fopen (name, "wb");
     
    495581  int status;
    496582
    497   status = stat (name1.c_str (), &file_stat1);
     583  status = ::stat (name1.c_str (), &file_stat1);
    498584
    499585  if (status == 0)
     
    507593  else
    508594    {
     595      if (errno != ENOENT)
     596        perror ("stat failure: " + get_full_path (name1));
    509597      // name1 does not exist
    510598      return (false);
    511599    }
    512600
    513   s1.read (name1);
    514 
    515   status = stat (name2.c_str (), &file_stat2);
     601  if (!s1.read (name1))
     602    {
     603      CmtError::set (CmtError::file_access_error, name1);
     604      return false;
     605    }
     606
     607  status = ::stat (name2.c_str (), &file_stat2);
    516608
    517609  if (status == 0)
     
    525617      if (((int) file_stat1.st_size) == ((int) file_stat2.st_size))
    526618        {
    527           s2.read (name2);
     619          if (!s2.read (name2))
     620            {
     621              CmtError::set (CmtError::file_access_error, name2);
     622              return false;
     623            }
    528624          if (s1 == s2)
    529625            {
    530               unlink (name1);
    531               return (true);
     626              if (0 == ::unlink (name1))
     627                return (true);
     628              else
     629                {
     630                  if (errno != ENOENT)
     631                    perror ("unlink failure: " + get_full_path (name1));
     632                  return (false);
     633                }
    532634            }
    533635        }
     636    }
     637  else
     638    {
     639      if (errno != ENOENT)
     640        {
     641          perror ("stat failure: " + get_full_path (name2));
     642          return (false);
     643        }
     644      // name2 does not exist
    534645    }
    535646
     
    543654        return (false);
    544655
    545       unlink (name1);
    546 
    547       return (true);
     656      if (0 == ::unlink (name1))
     657        return (true);
     658      else
     659        {
     660          if (errno != ENOENT)
     661            {
     662              perror ("unlink failure: " + get_full_path (name1));
     663              return (false);
     664            }
     665          return (true);
     666        }
    548667    }
    549668  else
     
    563682  int status;
    564683
    565   status = stat (name.c_str (), &file_stat);
     684  status = ::stat (name.c_str (), &file_stat);
    566685
    567686  if (status == 0)
     
    571690  else
    572691    {
     692      if (errno != ENOENT)
     693        {
     694          perror ("stat failure: " + get_full_path (name));
     695          return (-1);
     696        }
    573697      return (0);
    574698    }
     
    657781                                const cmt_string& newname)
    658782{
    659   ::unlink (newname.c_str ());
    660 
     783  if (-1 == ::unlink (newname)
     784      && errno != ENOENT)
     785    {
     786      perror ("unlink failure: " + get_full_path (newname));
     787      return (false);
     788    }
     789 
    661790#ifdef WIN32
    662791  int status = 1;
     
    666795
    667796  if (status == 0) return (true);
    668   return (false);
     797  else
     798    {
     799#ifndef WIN32
     800      perror ("symlink failure: " + newname + "->" + oldname);
     801#endif
     802      return (false);
     803    }
    669804}
    670805
     
    672807bool CmtSystem::remove_file (const cmt_string& name)
    673808{
    674   if (::unlink (name) != 0)
     809  if (::unlink (name) == 0)
     810    {
     811      return (true);
     812    }
     813  else
    675814    {
    676815      //      CmtMessage::error ("Cannot remove file " + name);
    677816      //      cerr << "#CMT> Cannot remove file " << name << endl;
     817      if (errno != ENOENT)
     818        perror ("unlink failure: " + get_full_path (name));
    678819      return (false);
    679820    }
    680 
    681   return (true);
    682821}
    683822
     
    710849  if (status != 0)
    711850    {
     851      perror ("rmdir failure: " + name);
    712852      char num[32]; sprintf (num, "%d", errno);
    713853      CmtMessage::error ("Cannot remove directory " + name + " errno=" + num);
     
    768908#ifdef WIN32
    769909          if (::_mkdir (full_path.c_str ()) != 0)
     910#else
     911          if (::mkdir (full_path.c_str (), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH ) != 0)
     912#endif
    770913            {
    771914              // cerr << "CMT> cannot create directory " << full_path << endl;
     915              perror ("mkdir failure: " + full_path);
    772916              return (false);
    773917            }
    774 #else
    775           if (::mkdir (full_path.c_str (), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH ) != 0)
    776             {
    777               // cerr << "CMT> cannot create directory " << full_path << endl;
    778               return (false);
    779             }
    780 #endif
    781918        }
    782919    }
     
    11741311  else
    11751312    {
    1176       perror ("uname");
     1313      perror ("uname failure");
    11771314    }
    11781315
     
    12201357cmt_string CmtSystem::get_temporary_name ()
    12211358{
    1222   cmt_string name;
    1223 
    1224   name = ::tmpnam (NULL);
    1225 
    1226   return (name);
     1359  //  cmt_string name;
     1360  char * ptr;
     1361  if ((ptr = ::tmpnam (NULL)) == NULL)
     1362    {
     1363      perror ("tmpnam failure");
     1364      static const cmt_string empty;
     1365      return empty;
     1366    }
     1367  //  name = ::tmpnam (NULL);
     1368
     1369  return ptr;
     1370  //  return (name);
    12271371}
    12281372
     
    13491493
    13501494    if (status == 0) return (true);
    1351     else return (false);
     1495    else
     1496      {
     1497#ifdef WIN32
     1498        CmtMessage::error ("putenv failure: " + v);
     1499#else
     1500        perror ("putenv failure: " + v);
     1501#endif
     1502        return (false);
     1503      }
    13521504  }
    13531505
     
    14941646  static cmt_string text;
    14951647
    1496   text.read (file_name);
     1648  if (!text.read (file_name))
     1649    {
     1650      CmtError::set (CmtError::file_access_error, file_name);
     1651      return;
     1652    }
    14971653
    14981654  int pos = text.find ("CMTPATH");
     
    16851841      if (status == -1) // error reported by pclose ()
    16861842        {
    1687           perror ("pclose");
     1843          perror ("pclose failure");
    16881844          if (errno == ECHILD)
    16891845            {
     
    25092665{
    25102666#ifdef _WIN32
    2511   cmt_string result = getenv ("USERNAME");
     2667  cmt_string result = ::getenv ("USERNAME");
    25122668#else
    2513   cmt_string result = getenv ("USER");
     2669  cmt_string result = ::getenv ("USER");
    25142670#endif
    25152671
     
    28613017  return (in (o));
    28623018}
    2863 
    2864 
Note: See TracChangeset for help on using the changeset viewer.