- Timestamp:
- Nov 30, 2011, 5:27:20 PM (12 years ago)
- Location:
- CMT/HEAD
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
CMT/HEAD/ChangeLog
r591 r592 1 2011-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 1 10 2011-11-29 <rybkin@lal.in2p3.fr> 468 2 11 -
CMT/HEAD/mgr/fragments/dependencies
r590 r592 11 11 endif 12 12 endif 13 14 ${CONSTITUENT}clean :: 15 $(cleanup_silent) \rm -rf $(bin)${CONSTITUENT}_deps $(bin)${CONSTITUENT}_dependencies.make 13 16 #-- end of dependencies ------------------- -
CMT/HEAD/source/cmt_system.cxx
r588 r592 56 56 char dir[PATH_MAX]; 57 57 // char dir[256]; 58 getcwd (dir, sizeof (dir)); 58 if (NULL == ::getcwd (dir, sizeof (dir))) 59 { 60 perror ("getcwd failure"); 61 return NULL; 62 } 59 63 strcpy ((char*) name, dir); 60 64 return ((char*) name); … … 72 76 char buffer[PATH_MAX] = ""; 73 77 // char buffer[256] = ""; 74 char* ptr = 0;78 // char* ptr = 0; 75 79 char* pwd_env = 0; 76 80 … … 85 89 else 86 90 { 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 } 88 97 } 89 98 … … 100 109 { 101 110 cmt_string d = CmtSystem::pwd (); 111 if (0 == d.size ()) return false; 102 112 d += file_separator (); 103 113 d += dir; … … 116 126 compress_path (s_dir); 117 127 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 } 124 145 return (false); 125 146 } … … 259 280 { 260 281 cmt_string here = CmtSystem::pwd (); 282 if (0 == here.size ()) return false; 261 283 if (test_directory(path)) 262 284 { 263 CmtSystem::cd (path);285 if (!CmtSystem::cd (path)) return false; 264 286 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 } 266 293 return true; 267 294 } 268 295 return false; 296 } 297 298 //-------------------------------------------------- 299 static 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; 269 319 } 270 320 … … 275 325 { 276 326 cmt_string here = CmtSystem::pwd (); 277 CmtSystem::cd (path); 327 if (0 == here.size ()) return false; 328 if (!CmtSystem::cd (path)) return false; 278 329 // 279 330 char buffer[PATH_MAX] = ""; 280 331 // 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; 283 338 const char* t = &buffer[0]; 284 339 result = t; 285 340 // cerr << "realpath_> path: " << path << " result: " << result << endl; 286 341 // 287 CmtSystem::cd (here);288 342 return true; 289 343 } … … 347 401 int status; 348 402 349 status = stat (name.c_str (), &file_stat);403 status = ::stat (name.c_str (), &file_stat); 350 404 351 405 //cerr << "status(stat) for " << name << " : " << status << " st_mode=" << file_stat.st_mode << endl; … … 364 418 else 365 419 { 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 } 366 425 return (false); 367 426 } … … 374 433 int status; 375 434 376 status = stat (name.c_str (), &file_stat);435 status = ::stat (name.c_str (), &file_stat); 377 436 378 437 if (status == 0) … … 389 448 else 390 449 { 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 } 391 455 return (false); 392 456 } … … 412 476 else 413 477 { 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 } 414 483 return (false); 415 484 } … … 426 495 else 427 496 { 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 } 428 502 return (false); 429 503 } … … 437 511 static cmt_string s2; 438 512 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 } 441 523 442 524 return ((s1 == s2)); … … 453 535 { 454 536 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 } 456 542 //unlink (name); 457 543 FILE* f = fopen (name, "wb"); … … 495 581 int status; 496 582 497 status = stat (name1.c_str (), &file_stat1);583 status = ::stat (name1.c_str (), &file_stat1); 498 584 499 585 if (status == 0) … … 507 593 else 508 594 { 595 if (errno != ENOENT) 596 perror ("stat failure: " + get_full_path (name1)); 509 597 // name1 does not exist 510 598 return (false); 511 599 } 512 600 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); 516 608 517 609 if (status == 0) … … 525 617 if (((int) file_stat1.st_size) == ((int) file_stat2.st_size)) 526 618 { 527 s2.read (name2); 619 if (!s2.read (name2)) 620 { 621 CmtError::set (CmtError::file_access_error, name2); 622 return false; 623 } 528 624 if (s1 == s2) 529 625 { 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 } 532 634 } 533 635 } 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 534 645 } 535 646 … … 543 654 return (false); 544 655 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 } 548 667 } 549 668 else … … 563 682 int status; 564 683 565 status = stat (name.c_str (), &file_stat);684 status = ::stat (name.c_str (), &file_stat); 566 685 567 686 if (status == 0) … … 571 690 else 572 691 { 692 if (errno != ENOENT) 693 { 694 perror ("stat failure: " + get_full_path (name)); 695 return (-1); 696 } 573 697 return (0); 574 698 } … … 657 781 const cmt_string& newname) 658 782 { 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 661 790 #ifdef WIN32 662 791 int status = 1; … … 666 795 667 796 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 } 669 804 } 670 805 … … 672 807 bool CmtSystem::remove_file (const cmt_string& name) 673 808 { 674 if (::unlink (name) != 0) 809 if (::unlink (name) == 0) 810 { 811 return (true); 812 } 813 else 675 814 { 676 815 // CmtMessage::error ("Cannot remove file " + name); 677 816 // cerr << "#CMT> Cannot remove file " << name << endl; 817 if (errno != ENOENT) 818 perror ("unlink failure: " + get_full_path (name)); 678 819 return (false); 679 820 } 680 681 return (true);682 821 } 683 822 … … 710 849 if (status != 0) 711 850 { 851 perror ("rmdir failure: " + name); 712 852 char num[32]; sprintf (num, "%d", errno); 713 853 CmtMessage::error ("Cannot remove directory " + name + " errno=" + num); … … 768 908 #ifdef WIN32 769 909 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 770 913 { 771 914 // cerr << "CMT> cannot create directory " << full_path << endl; 915 perror ("mkdir failure: " + full_path); 772 916 return (false); 773 917 } 774 #else775 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 #endif781 918 } 782 919 } … … 1174 1311 else 1175 1312 { 1176 perror ("uname ");1313 perror ("uname failure"); 1177 1314 } 1178 1315 … … 1220 1357 cmt_string CmtSystem::get_temporary_name () 1221 1358 { 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); 1227 1371 } 1228 1372 … … 1349 1493 1350 1494 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 } 1352 1504 } 1353 1505 … … 1494 1646 static cmt_string text; 1495 1647 1496 text.read (file_name); 1648 if (!text.read (file_name)) 1649 { 1650 CmtError::set (CmtError::file_access_error, file_name); 1651 return; 1652 } 1497 1653 1498 1654 int pos = text.find ("CMTPATH"); … … 1685 1841 if (status == -1) // error reported by pclose () 1686 1842 { 1687 perror ("pclose ");1843 perror ("pclose failure"); 1688 1844 if (errno == ECHILD) 1689 1845 { … … 2509 2665 { 2510 2666 #ifdef _WIN32 2511 cmt_string result = getenv ("USERNAME");2667 cmt_string result = ::getenv ("USERNAME"); 2512 2668 #else 2513 cmt_string result = getenv ("USER");2669 cmt_string result = ::getenv ("USER"); 2514 2670 #endif 2515 2671 … … 2861 3017 return (in (o)); 2862 3018 } 2863 2864
Note: See TracChangeset
for help on using the changeset viewer.