- Timestamp:
- Apr 13, 2011, 1:28:08 PM (13 years ago)
- Location:
- CMT/HEAD
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
CMT/HEAD/ChangeLog
r564 r565 1 2011-04-12 <rybkin@lal.in2p3.fr> 448 2 3 * source/cmt_awk.cxx: In class FAwk, in functions run, return failed on 4 error reading file 5 * source/cmt_system.cxx: In class CmtSystem, introduce and implement 6 functions mangle 7 * source/cmt_system.h: idem 8 * source/cmt_install_area.cxx: In class CmtInstallAreaMgr, in function 9 build_current_installarea, make use of Use::current (instead of pwd) 10 * source/cmt_commands.cxx: In class ArgParser, functions 11 option_with(out)_cmt, add -with(out)_cmt to cmtflags 12 * source/cmt_project.cxx: In class Project, in function find_in_cmt_paths, 13 do not invoke pwd 14 * source/cmt_symbol.cxx: In class Symbol, in function create, suppress 15 warning about set/macro <PACKAGE>ROOT for current package, in function 16 action, use mangled package prefix with scripts, in function print_clean, 17 use mangled set, path names with corresponding message, and quoted path, 18 script values for cleanup scripts, in function print, use mangled set, path 19 names with corresponding message, and quoted script values for setup 20 scripts. In class SymbolValueList, in function print, output CMT package 21 symbols as well 22 * source/cmt.h: In class Cmt, introduce universal function install_scripts 23 for both types of scripts, and function get_cmt_flags working on file, drop 24 functions install_test_cleanup_scripts, install_test_setup_scripts 25 * source/cmt_parser.cxx: In class Cmt, in functions do_config, do_relocate, 26 retrieve cmtflags from input requirements file and current cmtflags, if any, 27 and pass them to universal function install_scripts, in function do_setup, 28 output cmtflags in Requirements mode inverting -with(out)_cmt, implement 29 function get_cmt_flags working on file, universal function install_scripts, 30 move static function mangle to class CmtSystem, in functions print_clean, 31 print_context, use mangled package prefix in cleanup, setup scripts, in 32 function set_standard_macros, create StandardMacroBuilder instance for 33 Use::current (rather than Me). In class StandardMacroBuilder, in constructor, 34 do not invoke pwd, in functions fill_for_package, fill_for_current_package, 35 do not use argument, in function fill_for_branches, do not use pwd. 36 1 37 2011-03-22 <rybkin@lal.in2p3.fr> 447 2 38 -
CMT/HEAD/source/cmt.h
r561 r565 233 233 static void get_cmt_flags (CmtSystem::cmt_string_vector& flags); 234 234 static cmt_string get_cmt_flags (); 235 static cmt_string get_cmt_flags (const cmt_string& file_name); 235 236 static bool set_cmt_flags (const cmt_string& flags); 236 237 static bool add_cmt_flag (const cmt_string& flag); … … 241 242 static void install_cleanup_scripts (); 242 243 static void install_setup_scripts (); 244 static void install_scripts (ScriptType type, const cmt_string& flags); 243 245 static void install_native_version_file (); 244 static void install_test_cleanup_scripts ();245 static void install_test_setup_scripts ();246 246 // static bool load (const cmt_string& path, 247 247 static bool load (const ArgParser& ap, -
CMT/HEAD/source/cmt_awk.cxx
r542 r565 462 462 cmt_string text; 463 463 464 text.read (file_name);464 if (!text.read (file_name)) return (failed); 465 465 466 466 return (Awk::run (text, pattern)); … … 478 478 cmt_string text; 479 479 480 text.read (file_name);480 if (!text.read (file_name)) return (failed); 481 481 482 482 return (Awk::run (text, expression)); -
CMT/HEAD/source/cmt_commands.cxx
r562 r565 2193 2193 { 2194 2194 cmt.m_use_cmt = true; 2195 if (!Cmt::add_cmt_flag ("-with_cmt")) 2196 CmtMessage::error ("Cannot add flag `-with_cmt'"); 2195 2197 } 2196 2198 … … 2198 2200 { 2199 2201 cmt.m_use_cmt = false; 2202 if (!Cmt::add_cmt_flag ("-without_cmt")) 2203 CmtMessage::error ("Cannot add flag `-without_cmt'"); 2200 2204 } 2201 2205 -
CMT/HEAD/source/cmt_install_area.cxx
r459 r565 197 197 cmt_string installarea; 198 198 199 const cmt_string pwd = CmtSystem::pwd (); 200 201 installarea = Project::find_in_cmt_paths (pwd); 199 const Use& use = Use::current (); 200 cmt_string current_path (use.real_path); 201 if (!use.located ()) 202 { 203 CmtMessage::verbose ("build_current_installarea: Current use not located"); 204 current_path = CmtSystem::pwd (); 205 } 206 //const cmt_string pwd = CmtSystem::pwd (); 207 208 installarea = Project::find_in_cmt_paths (current_path); 209 //installarea = Project::find_in_cmt_paths (pwd); 202 210 203 211 return (installarea); -
CMT/HEAD/source/cmt_parser.cxx
r564 r565 2826 2826 if (Me.m_current_package == "methods") return; 2827 2827 2828 cmt_string file_name; 2829 if (strlen (ap.extra_file.c_str ()) == 0) 2830 file_name = "requirements"; 2831 else 2832 file_name = ap.extra_file; 2833 cmt_string cmtflags (get_cmt_flags (file_name)); 2834 2835 if (strlen (ap.extra_file.c_str ()) != 0) 2836 cmtflags += " -f=" + file_name; 2837 cmt_string flags (get_cmt_flags ()); 2838 if (flags.size () != 0) 2839 cmtflags += " " + flags; 2840 2828 2841 cmt_string branch; 2829 2842 … … 2848 2861 } 2849 2862 2850 install_setup_scripts ();2851 install_cleanup_scripts ();2852 //install_ test_setup_scripts ();2853 //install_ test_cleanup_scripts ();2863 install_scripts (SetupScript, cmtflags); 2864 install_scripts (CleanupScript, cmtflags); 2865 //install_setup_scripts (); 2866 //install_cleanup_scripts (); 2854 2867 2855 2868 Generator::build_default_makefile (); … … 2959 2972 */ 2960 2973 Me.m_quiet = true; 2961 install_setup_scripts (); 2962 install_cleanup_scripts (); 2974 install_scripts (SetupScript, cmtflags); 2975 install_scripts (CleanupScript, cmtflags); 2976 //install_setup_scripts (); 2977 //install_cleanup_scripts (); 2963 2978 install_native_version_file (); 2964 2979 … … 3024 3039 if (Me.m_current_package == "methods") return; 3025 3040 3041 cmt_string file_name; 3042 if (strlen (ap.extra_file.c_str ()) == 0) 3043 file_name = "requirements"; 3044 else 3045 file_name = ap.extra_file; 3046 cmt_string cmtflags (get_cmt_flags (file_name)); 3047 3048 if (strlen (ap.extra_file.c_str ()) != 0) 3049 cmtflags += " -f=" + file_name; 3050 cmt_string flags (get_cmt_flags ()); 3051 if (flags.size () != 0) 3052 cmtflags += " " + flags; 3053 3026 3054 cmt_string branch; 3027 3055 … … 3045 3073 cout << "------------------------------------------" << endl; 3046 3074 } 3047 install_setup_scripts ();3048 install_cleanup_scripts ();3049 //install_ test_setup_scripts ();3050 //install_ test_cleanup_scripts ();3075 install_scripts (SetupScript, cmtflags); 3076 install_scripts (CleanupScript, cmtflags); 3077 //install_setup_scripts (); 3078 //install_cleanup_scripts (); 3051 3079 3052 3080 Generator::build_default_makefile (); … … 3072 3100 // Generator::build_default_makefile (); 3073 3101 3102 /* 3074 3103 CmtSystem::cd (".."); 3075 3104 CmtSystem::cd (branch); … … 3095 3124 return; 3096 3125 } 3097 3098 install_setup_scripts (); 3099 install_cleanup_scripts (); 3126 */ 3127 Me.m_quiet = true; 3128 install_scripts (SetupScript, cmtflags); 3129 install_scripts (CleanupScript, cmtflags); 3130 //install_setup_scripts (); 3131 //install_cleanup_scripts (); 3100 3132 3101 3133 Generator::build_default_makefile (); … … 4109 4141 cout << "<setup>"; 4110 4142 break; 4143 case Requirements : 4144 CmtSystem::cmt_string_vector flags; 4145 get_cmt_flags (flags); 4146 cout << "\n# CMTFLAGS: -without_cmt"; 4147 for (int i = 0; i < flags.size (); i++) 4148 { 4149 if (flags[i] == "-without_cmt") 4150 cout << " -with_cmt"; 4151 else if (flags[i] == "-with_cmt") 4152 cout << " -without_cmt"; 4153 else 4154 cout << " " << flags[i]; 4155 } 4156 cout << endl; 4157 break; 4111 4158 } 4112 4159 print (ap.mode); … … 5057 5104 5058 5105 //---------------------------------------------------------- 5106 class CmtFlagsReader : public FAwk 5107 { 5108 public: 5109 5110 CmtFlagsReader () 5111 { } 5112 5113 CmtFlagsReader (const cmt_string& pattern) 5114 : m_pattern (pattern) 5115 { m_condition = ok; } 5116 5117 const cmt_string& get_pattern () const 5118 { 5119 return (m_pattern); 5120 } 5121 5122 const cmt_string& get_cmt_flags () const 5123 { 5124 return (m_cmt_flags); 5125 } 5126 5127 void filter (const cmt_string& line) 5128 { 5129 int p (line.find (m_pattern)); 5130 if (p == cmt_string::npos) return; 5131 if (m_cmt_flags.size () != 0) 5132 m_cmt_flags += " " + line.substr (p + m_pattern.size ()); 5133 else 5134 m_cmt_flags = line.substr (p + m_pattern.size ()); 5135 //stop (); 5136 } 5137 5138 private: 5139 const cmt_string m_pattern; 5140 cmt_string m_cmt_flags; 5141 }; 5142 5143 //---------------------------------------------------------- 5144 cmt_string Cmt::get_cmt_flags (const cmt_string& file_name) 5145 { 5146 cmt_string result; 5147 CmtFlagsReader reader ("CMTFLAGS:"); 5148 Awk::condition c = reader.run (file_name, reader.get_pattern ()); 5149 if (Awk::failed != c) 5150 result = reader.get_cmt_flags (); 5151 else 5152 CmtError::set (CmtError::file_access_error, file_name); 5153 return result; 5154 } 5155 5156 //---------------------------------------------------------- 5059 5157 bool Cmt::set_cmt_flags (const cmt_string& cmtflags) 5060 5158 { … … 5254 5352 5255 5353 //---------------------------------------------------------- 5256 // Mangle text so that it consists solely of5257 // letters, numbers, and underscores5258 // (any other characters are replaced with X).5259 // Then text, prefixed with a letter or underscore,5260 // can be used as shell variable name5261 //----------------------------------------------------------5262 static cmt_string mangle (const cmt_string& text)5263 {5264 cmt_string result;5265 int allocated = text.size ();5266 char* const buffer = (char*) malloc (allocated + 1);5267 char* b (buffer);5268 const char* t = text.c_str ();5269 while (*t)5270 {5271 if (isalnum (*t) || *t == '_')5272 *b++ = *t++;5273 else5274 {5275 *b++ = 'X'; t++;5276 }5277 }5278 *b = '\0';5279 result = buffer;5280 free (buffer);5281 return result;5282 }5283 5284 //----------------------------------------------------------5285 5354 void Cmt::install_cleanup_scripts () 5286 5355 { … … 5322 5391 cmt_string version = Me.m_current_version; 5323 5392 if (version == "v*") version = ""; 5324 cmt_string mangled_package = mangle (Me.m_current_package);5393 cmt_string mangled_package = CmtSystem::mangle (Me.m_current_package); 5325 5394 5326 5395 for (i = 0; i < modes; i++) … … 5479 5548 cmt_string version = Me.m_current_version; 5480 5549 if (version == "v*") version = ""; 5481 cmt_string mangled_package = mangle (Me.m_current_package);5550 cmt_string mangled_package = CmtSystem::mangle (Me.m_current_package); 5482 5551 5483 5552 for (i = 0; i < modes; i++) … … 5609 5678 5610 5679 //---------------------------------------------------------- 5611 void Cmt::install_ test_cleanup_scripts ()5680 void Cmt::install_scripts (ScriptType type, const cmt_string& flags) 5612 5681 { 5613 5682 #ifdef WIN32 … … 5622 5691 5623 5692 Use& current_use = Use::current (); 5624 5693 const cmt_string action = (SetupScript == type ? "setup" : "cleanup"); 5625 5694 if (!current_use.get_strategy ("SetupScripts")) 5626 5695 { 5627 5696 for (int i = 0; i < modes; i++) 5628 5697 { 5629 cmt_string old_file_name = "cleanup"; 5698 cmt_string old_file_name (action); 5699 //cmt_string old_file_name = "setup"; 5630 5700 old_file_name += "."; 5631 5701 old_file_name += suffix[i]; … … 5633 5703 { 5634 5704 if (CmtMessage::active (Error)) 5635 cerr << "Removing cleanup script " + old_file_name << endl; 5705 cerr << "Removing " + action + " script " + old_file_name << endl; 5706 //cerr << "Removing setup script " + old_file_name << endl; 5636 5707 CmtSystem::remove_file (old_file_name); 5637 5708 } … … 5641 5712 5642 5713 if (CmtMessage::active (Error)) 5643 cerr << "Creating cleanup scripts." << endl; 5644 5645 cmt_string temp; 5646 int i; 5714 cerr << "Creating " + action + " scripts." << endl; 5715 //cerr << "Creating setup scripts." << endl; 5716 5717 cmt_string no_cleanup_opt; 5718 5719 if (SetupScript == type) 5720 if (current_use.get_strategy ("SetupCleanup")) 5721 { 5722 no_cleanup_opt = " -no_cleanup"; 5723 } 5724 5725 no_cleanup_opt = flags + no_cleanup_opt; 5647 5726 5648 5727 cmt_string version = Me.m_current_version; 5649 5728 if (version == "v*") version = ""; 5650 cmt_string mangled_package = mangle (Me.m_current_package); 5651 5652 for (i = 0; i < modes; i++) 5653 { 5654 cmt_string file_name = "cleanup"; 5729 cmt_string mangled_package = CmtSystem::mangle (Me.m_current_package); 5730 5731 for (int i = 0; i < modes; i++) 5732 { 5733 cmt_string file_name = action; 5734 //cmt_string file_name = "setup"; 5655 5735 file_name += "."; 5656 5736 file_name += suffix[i]; … … 5663 5743 if (mode[i] == Csh) 5664 5744 { 5745 //fprintf (f, "# echo \"Setting %s %s in %s\"\n", 5746 fprintf (f, "# echo \"%s %s %s in %s\"\n", 5747 action.c_str (), 5748 Me.m_current_package.c_str (), 5749 version.c_str (), 5750 Me.m_current_path.c_str ()); 5751 fprintf (f, "\n"); 5752 5665 5753 fprintf (f, "if ( $?CMTROOT == 0 ) then\n"); 5666 5754 fprintf (f, " setenv CMTROOT %s\n", Me.m_cmt_root.c_str ()); … … 5669 5757 fprintf (f, "set cmt%stempfile=`${CMTROOT}/mgr/cmt -quiet build temporary_name`\n", mangled_package.c_str ()); 5670 5758 fprintf (f, "if $status != 0 then\n set cmt%stempfile=/tmp/cmt.$$\nendif\n", mangled_package.c_str ()); 5671 fprintf (f, "${CMTROOT}/mgr/cmt cleanup -%s -pack=cmt_standalone -path=%s $* >${cmt%stempfile}\n", 5672 suffix[i].c_str (), 5673 Me.m_current_path.c_str (), mangled_package.c_str ()); 5759 //fprintf (f, "${CMTROOT}/mgr/cmt setup -%s " 5760 fprintf (f, "${CMTROOT}/mgr/cmt %s -%s " 5761 "-pack=%s -version=%s -path=%s %s $* >${cmt%stempfile}\n", 5762 action.c_str (), 5763 suffix[i].c_str (), 5764 Me.m_current_package.c_str (), 5765 version.c_str (), 5766 Me.m_current_path.c_str (), 5767 no_cleanup_opt.c_str (), 5768 mangled_package.c_str ()); 5674 5769 fprintf (f, 5675 5770 "if ( $status != 0 ) then\n" 5676 " echo \"${CMTROOT}/mgr/cmt cleanup-%s "5677 "-pack=cmt_standalone -path=%s $* >${cmt%stempfile}\"\n"5678 " set cmt cleanupstatus=2\n"5771 " echo \"${CMTROOT}/mgr/cmt %s -%s " 5772 "-pack=%s -version=%s -path=%s %s $* >${cmt%stempfile}\"\n" 5773 " set cmt%sstatus=2\n" 5679 5774 " /bin/rm -f ${cmt%stempfile}\n" 5680 5775 " unset cmt%stempfile\n" 5681 " exit $cmt cleanupstatus\n"5776 " exit $cmt%sstatus\n" 5682 5777 "endif\n" 5683 "set cmt cleanupstatus=0\n"5778 "set cmt%sstatus=0\n" 5684 5779 "source ${cmt%stempfile}\n" 5685 5780 "if ( $status != 0 ) then\n" 5686 " set cmt cleanupstatus=2\n"5781 " set cmt%sstatus=2\n" 5687 5782 "endif\n" 5688 5783 "/bin/rm -f ${cmt%stempfile}\n" 5689 5784 "unset cmt%stempfile\n" 5690 "exit $cmtcleanupstatus\n", 5785 "exit $cmt%sstatus\n", 5786 action.c_str (), 5691 5787 suffix[i].c_str (), 5692 Me.m_current_path.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str ()); 5788 Me.m_current_package.c_str (), 5789 version.c_str (), 5790 Me.m_current_path.c_str (), 5791 no_cleanup_opt.c_str (), mangled_package.c_str (), 5792 action.c_str (), 5793 mangled_package.c_str (), 5794 mangled_package.c_str (), 5795 action.c_str (), 5796 action.c_str (), 5797 mangled_package.c_str (), 5798 action.c_str (), 5799 mangled_package.c_str (), 5800 mangled_package.c_str (), 5801 action.c_str ()); 5693 5802 } 5694 5803 else if (mode[i] == Sh) 5695 5804 { 5805 //fprintf (f, "# echo \"Setting %s %s in %s\"\n", 5806 fprintf (f, "# echo \"%s %s %s in %s\"\n", 5807 action.c_str (), 5808 Me.m_current_package.c_str (), 5809 version.c_str (), 5810 Me.m_current_path.c_str ()); 5811 fprintf (f, "\n"); 5812 5696 5813 fprintf (f, "if test \"${CMTROOT}\" = \"\"; then\n"); 5697 5814 fprintf (f, " CMTROOT=%s; export CMTROOT\n", Me.m_cmt_root.c_str ()); … … 5700 5817 fprintf (f, "cmt%stempfile=`${CMTROOT}/mgr/cmt -quiet build temporary_name`\n", mangled_package.c_str ()); 5701 5818 fprintf (f, "if test ! $? = 0 ; then cmt%stempfile=/tmp/cmt.$$; fi\n", mangled_package.c_str ()); 5702 fprintf (f, "${CMTROOT}/mgr/cmt cleanup -%s -pack=cmt_standalone -path=%s $* >${cmt%stempfile}\n", 5703 suffix[i].c_str (), 5704 Me.m_current_path.c_str (), mangled_package.c_str ()); 5819 //fprintf (f, "${CMTROOT}/mgr/cmt setup -%s " 5820 fprintf (f, "${CMTROOT}/mgr/cmt %s -%s " 5821 "-pack=%s -version=%s -path=%s %s $* >${cmt%stempfile}\n", 5822 action.c_str (), 5823 suffix[i].c_str (), 5824 Me.m_current_package.c_str (), 5825 version.c_str (), 5826 Me.m_current_path.c_str (), 5827 no_cleanup_opt.c_str (), 5828 mangled_package.c_str ()); 5705 5829 fprintf (f, 5706 5830 "if test $? != 0 ; then\n" 5707 " echo >&2 \"${CMTROOT}/mgr/cmt cleanup-%s "5708 "-pack=cmt_standalone -path=%s $* >${cmt%stempfile}\"\n"5709 " cmt cleanupstatus=2\n"5831 " echo >&2 \"${CMTROOT}/mgr/cmt %s -%s " 5832 "-pack=%s -version=%s -path=%s %s $* >${cmt%stempfile}\"\n" 5833 " cmt%sstatus=2\n" 5710 5834 " /bin/rm -f ${cmt%stempfile}\n" 5711 5835 " unset cmt%stempfile\n" 5712 " return $cmt cleanupstatus\n"5836 " return $cmt%sstatus\n" 5713 5837 "fi\n" 5714 "cmt cleanupstatus=0\n"5838 "cmt%sstatus=0\n" 5715 5839 ". ${cmt%stempfile}\n" 5716 5840 "if test $? != 0 ; then\n" 5717 " cmt cleanupstatus=2\n"5841 " cmt%sstatus=2\n" 5718 5842 "fi\n" 5719 5843 "/bin/rm -f ${cmt%stempfile}\n" 5720 5844 "unset cmt%stempfile\n" 5721 "return $cmtcleanupstatus\n", 5845 "return $cmt%sstatus\n", 5846 action.c_str (), 5722 5847 suffix[i].c_str (), 5723 Me.m_current_path.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str ()); 5848 Me.m_current_package.c_str (), 5849 version.c_str (), 5850 Me.m_current_path.c_str (), 5851 no_cleanup_opt.c_str (), mangled_package.c_str (), 5852 action.c_str (), 5853 mangled_package.c_str (), 5854 mangled_package.c_str (), 5855 action.c_str (), 5856 action.c_str (), 5857 mangled_package.c_str (), 5858 action.c_str (), 5859 mangled_package.c_str (), 5860 mangled_package.c_str (), 5861 action.c_str ()); 5724 5862 } 5725 5863 else if (mode[i] == Bat) 5726 5864 { 5865 //fprintf (f, "rem Setting %s %s in %%~d0%%~p0\n", 5866 fprintf (f, "rem %s %s %s in %%~d0%%~p0\n", 5867 action.c_str (), 5868 Me.m_current_package.c_str (), 5869 version.c_str ()); 5727 5870 dos_script_prefix (f, Me.m_cmt_root, 5728 "cmt_standalone", "cmt_standalone", "", Me.m_current_path, 5729 "cleanup"); 5871 Me.m_current_package, mangled_package, version, Me.m_current_path, 5872 action, no_cleanup_opt); 5873 //"setup", no_cleanup_opt); 5730 5874 } 5731 5875 … … 5735 5879 // fclose (f); 5736 5880 5737 cmt_string old_file_name = "cleanup"; 5881 cmt_string old_file_name = action; 5882 //cmt_string old_file_name = "setup"; 5738 5883 old_file_name += "."; 5739 5884 old_file_name += suffix[i]; … … 5779 5924 } 5780 5925 } 5781 }5782 //----------------------------------------------------------5783 void Cmt::install_test_setup_scripts ()5784 {5785 #ifdef WIN325786 static const int modes = 1;5787 static const cmt_string suffix[1] = {"bat"};5788 static const PrintMode mode[1] = {Bat};5789 #else5790 static const int modes = 2;5791 static const cmt_string suffix[2] = {"csh", "sh"};5792 static const PrintMode mode[2] = {Csh, Sh};5793 #endif5794 5795 Use& current_use = Use::current ();5796 5797 if (!current_use.get_strategy ("SetupScripts"))5798 {5799 for (int i = 0; i < modes; i++)5800 {5801 cmt_string old_file_name = "setup";5802 old_file_name += ".";5803 old_file_name += suffix[i];5804 if (CmtSystem::test_file (old_file_name))5805 {5806 if (CmtMessage::active (Error))5807 cerr << "Removing setup script " + old_file_name << endl;5808 CmtSystem::remove_file (old_file_name);5809 }5810 }5811 return;5812 }5813 5814 if (CmtMessage::active (Error))5815 cerr << "Creating setup scripts." << endl;5816 5817 cmt_string no_cleanup_opt;5818 5819 if (current_use.get_strategy ("SetupCleanup"))5820 {5821 no_cleanup_opt = " -no_cleanup";5822 }5823 5824 cmt_string temp;5825 int i;5826 5827 cmt_string version = Me.m_current_version;5828 if (version == "v*") version = "";5829 cmt_string mangled_package = mangle (Me.m_current_package);5830 5831 for (i = 0; i < modes; i++)5832 {5833 cmt_string file_name = "setup";5834 file_name += ".";5835 file_name += suffix[i];5836 file_name += ".";5837 file_name += "new";5838 5839 FILE* f = fopen (file_name.c_str (), "wb");5840 if (f != NULL)5841 {5842 if (mode[i] == Csh)5843 {5844 fprintf (f, "# echo \"Setting standalone package\"\n");5845 fprintf (f, "\n");5846 5847 fprintf (f, "if ( $?CMTROOT == 0 ) then\n");5848 fprintf (f, " setenv CMTROOT %s\n", Me.m_cmt_root.c_str ());5849 fprintf (f, "endif\n");5850 fprintf (f, "source ${CMTROOT}/mgr/setup.csh\n");5851 fprintf (f, "set cmt%stempfile=`${CMTROOT}/mgr/cmt -quiet build temporary_name`\n", mangled_package.c_str ());5852 fprintf (f, "if $status != 0 then\n set cmt%stempfile=/tmp/cmt.$$\nendif\n", mangled_package.c_str ());5853 fprintf (f, "${CMTROOT}/mgr/cmt setup -%s -pack=cmt_standalone -path=%s %s $* >${cmt%stempfile}\n",5854 suffix[i].c_str (),5855 Me.m_current_path.c_str (),5856 no_cleanup_opt.c_str (), mangled_package.c_str ());5857 fprintf (f,5858 "if ( $status != 0 ) then\n"5859 " echo \"${CMTROOT}/mgr/cmt setup -%s "5860 "-pack=cmt_standalone -path=%s %s $* >${cmt%stempfile}\"\n"5861 " set cmtsetupstatus=2\n"5862 " /bin/rm -f ${cmt%stempfile}\n"5863 " unset cmt%stempfile\n"5864 " exit $cmtsetupstatus\n"5865 "endif\n"5866 "set cmtsetupstatus=0\n"5867 "source ${cmt%stempfile}\n"5868 "if ( $status != 0 ) then\n"5869 " set cmtsetupstatus=2\n"5870 "endif\n"5871 "/bin/rm -f ${cmt%stempfile}\n"5872 "unset cmt%stempfile\n"5873 "exit $cmtsetupstatus\n",5874 suffix[i].c_str (),5875 Me.m_current_path.c_str (),5876 no_cleanup_opt.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str ());5877 }5878 else if (mode[i] == Sh)5879 {5880 fprintf (f, "# echo \"Setting standalone package\"\n");5881 fprintf (f, "\n");5882 5883 fprintf (f, "if test \"${CMTROOT}\" = \"\"; then\n");5884 fprintf (f, " CMTROOT=%s; export CMTROOT\n", Me.m_cmt_root.c_str ());5885 fprintf (f, "fi\n");5886 fprintf (f, ". ${CMTROOT}/mgr/setup.sh\n");5887 fprintf (f, "cmt%stempfile=`${CMTROOT}/mgr/cmt -quiet build temporary_name`\n", mangled_package.c_str ());5888 fprintf (f, "if test ! $? = 0 ; then cmt%stempfile=/tmp/cmt.$$; fi\n", mangled_package.c_str ());5889 fprintf (f, "${CMTROOT}/mgr/cmt setup -%s -pack=cmt_standalone -path=%s %s $* >${cmt%stempfile}\n",5890 suffix[i].c_str (),5891 Me.m_current_path.c_str (),5892 no_cleanup_opt.c_str (), mangled_package.c_str ());5893 fprintf (f,5894 "if test $? != 0 ; then\n"5895 " echo >&2 \"${CMTROOT}/mgr/cmt setup -%s "5896 "-pack=cmt_standalone -path=%s %s $* >${cmt%stempfile}\"\n"5897 " cmtsetupstatus=2\n"5898 " /bin/rm -f ${cmt%stempfile}\n"5899 " unset cmt%stempfile\n"5900 " return $cmtsetupstatus\n"5901 "fi\n"5902 "cmtsetupstatus=0\n"5903 ". ${cmt%stempfile}\n"5904 "if test $? != 0 ; then\n"5905 " cmtsetupstatus=2\n"5906 "fi\n"5907 "/bin/rm -f ${cmt%stempfile}\n"5908 "unset cmt%stempfile\n"5909 "return $cmtsetupstatus\n",5910 suffix[i].c_str (),5911 Me.m_current_path.c_str (),5912 no_cleanup_opt.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str (), mangled_package.c_str ());5913 }5914 else if (mode[i] == Bat)5915 {5916 fprintf (f, "rem Setting standalone package\n");5917 dos_script_prefix (f, Me.m_cmt_root,5918 "cmt_standalone", "cmt_standalone", "", Me.m_current_path,5919 "setup", no_cleanup_opt);5920 }5921 5922 fprintf (f, "\n");5923 5924 CmtSystem::close_ostream (f, file_name);5925 // fclose (f);5926 5927 cmt_string old_file_name = "setup";5928 old_file_name += ".";5929 old_file_name += suffix[i];5930 5931 CmtSystem::compare_and_update_files (file_name, old_file_name);5932 }5933 else5934 {5935 CmtError::set (CmtError::file_access_error, file_name);5936 }5937 }5938 5926 } 5939 5927 … … 7314 7302 set_standard_macros (); 7315 7303 7316 Script::all_print_clean (mode);7304 //Script::all_print_clean (mode); 7317 7305 Symbol::all_print_clean (mode); 7306 7307 cmt_string prefix; 7308 if (0 != CmtSystem::mangle (Me.m_current_prefix, prefix)) 7309 CmtMessage::verbose ("Replace " + Me.m_current_prefix + " with " + prefix); 7318 7310 7319 7311 switch (mode) … … 7322 7314 if (Me.m_current_package != "CMT") 7323 7315 { 7324 cout << "unsetenv " << Me.m_current_prefix << "ROOT" << endl;7325 cout << "unsetenv " << Me.m_current_prefix << "CONFIG" << endl;7316 cout << "unsetenv " << prefix << "ROOT" << endl; 7317 cout << "unsetenv " << prefix << "CONFIG" << endl; 7326 7318 } 7327 7319 break; … … 7329 7321 if (Me.m_current_package != "CMT") 7330 7322 { 7331 cout << "unset " << Me.m_current_prefix << "ROOT" << endl;7332 cout << "unset " << Me.m_current_prefix << "CONFIG" << endl;7323 cout << "unset " << prefix << "ROOT" << endl; 7324 cout << "unset " << prefix << "CONFIG" << endl; 7333 7325 } 7334 7326 break; … … 7336 7328 if (Me.m_current_package != "CMT") 7337 7329 { 7338 cout << "set " << Me.m_current_prefix << "ROOT=" << endl;7339 cout << "set " << Me.m_current_prefix << "CONFIG=" << endl;7330 cout << "set " << prefix << "ROOT=" << endl; 7331 cout << "set " << prefix << "CONFIG=" << endl; 7340 7332 } 7341 7333 break; … … 7356 7348 if (p->is_cmt ()) continue; 7357 7349 7350 7351 if (0 != CmtSystem::mangle (use->prefix, prefix)) 7352 CmtMessage::verbose ("Replace " + use->prefix + " with " + prefix); 7358 7353 7359 7354 switch (mode) 7360 7355 { 7361 7356 case Csh : 7362 cout << "unsetenv " << use->prefix << "ROOT" << endl;7363 cout << "unsetenv " << use->prefix << "CONFIG" << endl;7357 cout << "unsetenv " << prefix << "ROOT" << endl; 7358 cout << "unsetenv " << prefix << "CONFIG" << endl; 7364 7359 break; 7365 7360 case Sh : 7366 cout << "unset " << use->prefix << "ROOT" << endl;7367 cout << "unset " << use->prefix << "CONFIG" << endl;7361 cout << "unset " << prefix << "ROOT" << endl; 7362 cout << "unset " << prefix << "CONFIG" << endl; 7368 7363 break; 7369 7364 case Bat : 7370 cout << "set " << use->prefix << "ROOT=" << endl;7371 cout << "set " << use->prefix << "CONFIG=" << endl;7365 cout << "set " << prefix << "ROOT=" << endl; 7366 cout << "set " << prefix << "CONFIG=" << endl; 7372 7367 break; 7373 7368 } … … 7405 7400 bool do_root = use.get_strategy ("SetupRoot"); 7406 7401 7402 cmt_string prefix (use.prefix); 7403 switch (mode) 7404 { 7405 case Requirements : 7406 break; 7407 default: 7408 if (do_config || do_root) 7409 { 7410 if (0 != CmtSystem::mangle (use.prefix, prefix)) 7411 CmtMessage::verbose ("Replace " + use.prefix + " with " + prefix); 7412 } 7413 break; 7414 } 7407 7415 7408 7416 switch (mode) … … 7411 7419 if (do_root) 7412 7420 { 7413 cout << "setenv " << use.prefix << "ROOT \"" <<7421 cout << "setenv " << prefix << "ROOT \"" << 7414 7422 use.get_full_path () << "\"" << endl; 7415 7423 } … … 7423 7431 if (do_config) 7424 7432 { 7425 cout << "setenv " << use.prefix << "CONFIG \"" << tag << "\"" << endl;7433 cout << "setenv " << prefix << "CONFIG \"" << tag << "\"" << endl; 7426 7434 } 7427 7435 } … … 7431 7439 if (do_root) 7432 7440 { 7433 cout << use.prefix << "ROOT=\"" <<7441 cout << prefix << "ROOT=\"" << 7434 7442 use.get_full_path () << "\"; export " << 7435 use.prefix << "ROOT" << endl;7443 prefix << "ROOT" << endl; 7436 7444 } 7437 7445 … … 7444 7452 if (do_config) 7445 7453 { 7446 cout << use.prefix << "CONFIG=\"" <<7454 cout << prefix << "CONFIG=\"" << 7447 7455 tag << "\"; export " << 7448 use.prefix << "CONFIG" << endl;7456 prefix << "CONFIG" << endl; 7449 7457 } 7450 7458 } … … 7454 7462 if (do_root) 7455 7463 { 7456 cout << "set " << use.prefix << "ROOT=" <<7457 use.get_full_path () << endl;7464 cout << "set " << prefix << "ROOT=" << 7465 CmtSystem::quote (use.get_full_path (), " \t") << endl; 7458 7466 } 7459 7467 … … 7466 7474 if (do_config) 7467 7475 { 7468 cout << "set " << use.prefix << "CONFIG=" << tag<< endl;7476 cout << "set " << prefix << "CONFIG=" << CmtSystem::quote (tag, " \t") << endl; 7469 7477 } 7470 7478 } … … 7474 7482 if (do_root) 7475 7483 { 7476 cout << "<variable><name>" << use.prefix << "ROOT</name>"7484 cout << "<variable><name>" << prefix << "ROOT</name>" 7477 7485 << "<value>" << use.get_full_path () << "</value></variable>"; 7478 7486 } … … 7487 7495 if (do_config) 7488 7496 { 7489 cout << "<variable><name>" << use.prefix << "CONFIG</name>"7497 cout << "<variable><name>" << prefix << "CONFIG</name>" 7490 7498 << "<value>" << tag << "</value></variable>"; 7491 7499 } … … 7497 7505 use.get_package_name () != "CMT") 7498 7506 { 7499 cout << "set " << use.prefix << "ROOT \"" <<7500 use.get_full_path () << "\""<< endl;7507 cout << "set " << use.prefix << "ROOT " << 7508 CmtSystem::quote (use.get_full_path (), " \t") << endl; 7501 7509 7502 7510 cmt_string name (use.prefix + "ROOT"); … … 7516 7524 if (use.get_package_name () == "CMT") 7517 7525 { 7518 cout << "set CMTCONFIG \"" << system << "\""<< endl;7526 cout << "set CMTCONFIG " << system << endl; 7519 7527 } 7520 7528 else … … 7522 7530 if (do_config) 7523 7531 { 7524 cout << "set " << use.prefix << "CONFIG \"" << tag << "\""<< endl;7532 cout << "set " << use.prefix << "CONFIG " << CmtSystem::quote (tag, " \t") << endl; 7525 7533 } 7526 7534 } … … 8114 8122 fs = CmtSystem::file_separator (); 8115 8123 buffer = ""; 8116 pwd = CmtSystem::pwd ();8117 CmtSystem::split (pwd, fs, vb);8124 //pwd = CmtSystem::pwd (); 8125 //CmtSystem::split (pwd, fs, vb); 8118 8126 current_use = &(Use::current ()); 8119 8127 current_tag = tag; … … 8161 8169 * PACKAGE_ROOT 8162 8170 */ 8163 void fill_for_package ( const cmt_string& current_dir)8171 void fill_for_package () 8164 8172 { 8165 8173 buffer = "macro package \""; … … 8251 8259 } 8252 8260 8261 if (!Symbol::is_selected ("javabin")) 8262 { 8263 buffer = "macro javabin \"."; 8264 buffer += fs; 8265 buffer += "\""; 8266 apply (); 8267 } 8268 8269 if (!Symbol::is_selected ("mgr")) 8270 { 8271 buffer = "macro mgr \"."; 8272 buffer += fs; 8273 buffer += "\""; 8274 apply (); 8275 } 8276 8253 8277 if (!Symbol::is_selected ("BIN")) 8254 8278 { … … 8270 8294 else 8271 8295 { 8272 atemp = pwd + fs + temp; 8296 atemp = "$(PACKAGE_ROOT)"; 8297 Symbol::expand (atemp); 8298 atemp += fs + temp; 8299 //atemp = pwd + fs + temp; 8273 8300 CmtSystem::compress_path (atemp); 8274 8301 } … … 8290 8317 } 8291 8318 } 8292 8293 if (!Symbol::is_selected ("javabin"))8294 {8295 buffer = "macro javabin \".";8296 buffer += fs;8297 buffer += "\"";8298 apply ();8299 }8300 8301 if (!Symbol::is_selected ("mgr"))8302 {8303 buffer = "macro mgr \".";8304 buffer += fs;8305 buffer += "\"";8306 apply ();8307 }8308 8319 } 8309 8320 else … … 8363 8374 } 8364 8375 8376 if (!Symbol::is_selected ("javabin")) 8377 { 8378 buffer = "macro javabin \".."; 8379 buffer += fs; 8380 buffer += "classes"; 8381 buffer += fs; 8382 buffer += "\""; 8383 apply (); 8384 } 8385 8386 if (current_style == mgr_style) 8387 { 8388 buffer = "macro mgrdir \"mgr\""; 8389 apply (); 8390 8391 buffer = "macro mgr \".."; 8392 buffer += fs; 8393 buffer += "mgr"; 8394 buffer += fs; 8395 buffer += "\""; 8396 apply (); 8397 } 8398 else 8399 { 8400 buffer = "macro mgrdir \"cmt\""; 8401 apply (); 8402 8403 buffer = "macro mgr \".."; 8404 buffer += fs; 8405 buffer += "cmt"; 8406 buffer += fs; 8407 buffer += "\""; 8408 apply (); 8409 } 8410 8365 8411 if (!Symbol::is_selected ("BIN")) 8366 8412 { … … 8389 8435 else 8390 8436 { 8391 atemp = pwd + fs + temp; 8437 atemp = "$(PACKAGE_ROOT)"; 8438 atemp += fs + "$(mgrdir)"; 8439 Symbol::expand (atemp); 8440 atemp += fs + temp; 8441 //atemp = pwd + fs + temp; 8392 8442 CmtSystem::compress_path (atemp); 8393 8443 } … … 8409 8459 } 8410 8460 } 8411 8412 if (!Symbol::is_selected ("javabin"))8413 {8414 buffer = "macro javabin \"..";8415 buffer += fs;8416 buffer += "classes";8417 buffer += fs;8418 buffer += "\"";8419 apply ();8420 }8421 8422 if (current_style == mgr_style)8423 {8424 buffer = "macro mgrdir \"mgr\"";8425 apply ();8426 8427 buffer = "macro mgr \"..";8428 buffer += fs;8429 buffer += "mgr";8430 buffer += fs;8431 buffer += "\"";8432 apply ();8433 }8434 else8435 {8436 buffer = "macro mgrdir \"cmt\"";8437 apply ();8438 8439 buffer = "macro mgr \"..";8440 buffer += fs;8441 buffer += "cmt";8442 buffer += fs;8443 buffer += "\"";8444 apply ();8445 }8446 8461 8447 8462 Cmt::configure_current_cmtpath (); … … 9354 9369 * and even before reading its requirements file. 9355 9370 */ 9356 void fill_for_current_package ( const cmt_string& current_dir)9371 void fill_for_current_package () 9357 9372 { 9358 9373 fill_for_tag (); 9359 fill_for_package ( current_dir);9374 fill_for_package (); 9360 9375 } 9361 9376 … … 9363 9378 cmt_string fs; 9364 9379 cmt_string buffer; 9365 CmtSystem::cmt_string_vector vb;9366 cmt_string pwd;9380 //CmtSystem::cmt_string_vector vb; 9381 //cmt_string pwd; 9367 9382 Use* current_use; 9368 9383 cmt_string current_tag; … … 9505 9520 9506 9521 StandardMacroBuilder builder (Me.m_current_tag, 9507 Me.m_current_package, 9508 Me.m_current_version, 9509 Me.m_current_prefix, 9510 Me.m_current_style); 9511 9512 9513 builder.fill_for_current_package (Me.m_current_dir); 9522 current_use.get_package_name (),//Me.m_current_package, 9523 current_use.version,//Me.m_current_version, 9524 current_use.prefix,//Me.m_current_prefix, 9525 current_use.style);//Me.m_current_style); 9526 9527 builder.fill_for_current_package (); 9514 9528 9515 9529 builder.fill_for_branches (); -
CMT/HEAD/source/cmt_project.cxx
r563 r565 1652 1652 cmt_string Project::find_in_cmt_paths (const cmt_string& path) 1653 1653 { 1654 const cmt_string pwd = CmtSystem::pwd ();1654 //const cmt_string pwd = CmtSystem::pwd (); 1655 1655 1656 1656 // In case there are symlinks -
CMT/HEAD/source/cmt_symbol.cxx
r561 r565 774 774 break; 775 775 } 776 777 CmtMessage::warning ("Symbol " + name 778 + " inconsistently redeclared from " + s1 779 + " to " + s2 780 + ( (use != 0) ? 781 " in package " + use->get_package_name () : 782 "" ) 783 ); 776 // <PACKAGE>ROOT macro is defined in 777 // Use::fill_standard_macros <- SyntaxParser::parse_requirements 778 // "cmt -requirements setup" may generate <PACKAGE>ROOT set 779 // hence, warning 780 // Symbol <PACKAGE>ROOT inconsistently redeclared from macro to set in package <package> 781 // below, we suppress the warning for current package 782 if (use != &(Use::current()) || 783 (Use::current().prefix + "ROOT") != name || 784 symbol->type != SymbolMacro || 785 type != SymbolSet) 786 CmtMessage::warning ("Symbol " + name 787 + " inconsistently redeclared from " + s1 788 + " to " + s2 789 + ( (use != 0) ? 790 " in package " + use->get_package_name () : 791 "" ) 792 ); 784 793 /* 785 794 cerr << "#CMT> Warning: Symbol " << name … … 982 991 full_name = "${"; 983 992 #endif 984 full_name += use->prefix;993 full_name += CmtSystem::mangle (use->prefix); 985 994 full_name += "ROOT"; 986 995 #ifdef WIN32 … … 1612 1621 if (name == "CMTCONFIG") return (0); 1613 1622 1623 cmt_string _name; 1624 switch (type) 1625 { 1626 case SymbolSet : 1627 case SymbolPath : 1628 if (0 != CmtSystem::mangle (name, _name)) 1629 CmtMessage::info ("Replace " + name + " with " + _name); 1630 break; 1631 } 1632 1614 1633 switch (type) 1615 1634 { … … 1618 1637 { 1619 1638 case Csh : 1620 cout << "unsetenv " << name;1639 cout << "unsetenv " << _name; 1621 1640 result = 1; 1622 1641 break; 1623 1642 case Sh : 1624 cout << "unset " << name;1643 cout << "unset " << _name; 1625 1644 result = 1; 1626 1645 break; 1627 1646 case Bat : 1628 cout << "set " << name << "=";1647 cout << "set " << _name << "="; 1629 1648 result = 1; 1630 1649 break; … … 1651 1670 if (temp == "") 1652 1671 { 1653 cout << "unsetenv " << name;1672 cout << "unsetenv " << _name; 1654 1673 } 1655 1674 else 1656 1675 { 1657 cout << "setenv " << name << " " << temp;1676 cout << "setenv " << _name << " " << CmtSystem::quote (temp, " \t"); 1658 1677 } 1659 1678 result = 1; 1660 1679 break; 1661 1680 case Sh : 1662 cout << name << "=" << temp << "; export " <<name;1681 cout << _name << "=" << CmtSystem::quote (temp, " \t") << "; export " << _name; 1663 1682 result = 1; 1664 1683 break; 1665 1684 case Bat : 1666 cout << "set " << name << "=" << temp;1685 cout << "set " << _name << "=" << CmtSystem::quote (temp, " \t"); 1667 1686 result = 1; 1668 1687 break; … … 1673 1692 { 1674 1693 case Csh : 1675 cout << "if ( -f " << name<< ".csh ) then" << endl;1676 cout << " source " << name<< ".csh" << endl;1694 cout << "if ( -f " << CmtSystem::quote (name, " \t") << ".csh ) then" << endl; 1695 cout << " source " << CmtSystem::quote (name, " \t") << ".csh" << endl; 1677 1696 cout << 1678 1697 "if ( $status != 0 ) then\n" … … 1683 1702 break; 1684 1703 case Sh : 1685 cout << "if test -f " << name<< ".sh; then" << endl;1686 cout << " . " << name<< ".sh" << endl;1704 cout << "if test -f " << CmtSystem::quote (name, " \t") << ".sh; then" << endl; 1705 cout << " . " << CmtSystem::quote (name, " \t") << ".sh" << endl; 1687 1706 cout << 1688 1707 "if test $? != 0; then\n" … … 1693 1712 break; 1694 1713 case Bat : 1695 cout << "call " << name;1714 cout << "call " << CmtSystem::quote (name, " \t"); 1696 1715 result = 1; 1697 1716 break; … … 1707 1726 { 1708 1727 int result = 0; 1709 cmt_string temp; 1710 1711 temp = build_macro_value (); 1712 1728 1729 cmt_string temp = build_macro_value (); 1713 1730 bool empty = (temp.size () == 0) ? true : false; 1714 1731 … … 1719 1736 } 1720 1737 1738 cmt_string _name; 1721 1739 switch (type) 1722 1740 { 1723 1741 case SymbolSet : 1724 1742 case SymbolPath : 1743 if (0 != CmtSystem::mangle (name, _name)) 1744 CmtMessage::info ("Replace " + name + " with " + _name); 1725 1745 switch (mode) 1726 1746 { 1727 1747 case Csh : 1728 if (empty) cout << "unsetenv " << name; 1729 else cout << "setenv " << name << " \"" << temp << "\""; 1748 if (empty) cout << "unsetenv " << _name; 1749 else cout << "setenv " << _name << " \"" << temp << "\""; 1750 //else cout << "setenv " << name << " " << CmtSystem::quote (temp, " \t"); 1730 1751 1731 1752 result = 1; 1732 1753 break; 1733 1754 case Sh : 1734 if (empty) cout << "unset " << name; 1735 else cout << name << "=\"" << temp << "\"; export " << name; 1755 if (empty) cout << "unset " << _name; 1756 else cout << _name << "=\"" << temp << "\"; export " << _name; 1757 //else cout << name << "=" << CmtSystem::quote (temp, " \t") << "; export " << name; 1736 1758 1737 1759 result = 1; … … 1739 1761 case Bat : 1740 1762 temp.replace_all ("/", "\\"); 1741 cout << "set " << name << "=" << temp; 1763 cout << "set " << _name << "=" << CmtSystem::quote (temp, " \t"); 1764 //cout << "set " << name << "=" << temp; 1742 1765 result = 1; 1743 1766 break; 1744 1767 case Xml : 1745 cout << "<variable><name>" << name << "</name>"1768 cout << "<variable><name>" << _name << "</name>" 1746 1769 << "<value>" << temp << "</value></variable>"; 1747 1770 result = 1; … … 1754 1777 case Csh : 1755 1778 cout << "alias " << name << 1756 " \"" << temp << "\""; 1779 " \"" << temp << "\""; 1780 //CmtSystem::quote (temp, " \t"); 1757 1781 result = 1; 1758 1782 break; 1759 1783 case Sh : 1760 1784 cout << "alias " << name << 1761 "=\"" << temp << "\""; 1785 "=\"" << temp << "\""; 1786 //"=" << CmtSystem::quote (temp, " \t"); 1762 1787 result = 1; 1763 1788 break; 1764 1789 case Bat : 1765 1790 cout << "set " << name << 1766 "=" << temp; 1791 "=" << CmtSystem::quote (temp, " \t"); 1792 //"=" << temp; 1767 1793 result = 1; 1768 1794 break; … … 1786 1812 { 1787 1813 case Csh : 1788 cout << "if ( -f " << name<< ".csh ) then" << endl;1789 cout << " source " << name<< ".csh" << endl;1814 cout << "if ( -f " << CmtSystem::quote (name, " \t") << ".csh ) then" << endl; 1815 cout << " source " << CmtSystem::quote (name, " \t") << ".csh" << endl; 1790 1816 cout << 1791 1817 "if ( $status != 0 ) then\n" … … 1796 1822 break; 1797 1823 case Sh : 1798 cout << "if test -f " << name<< ".sh; then" << endl;1799 cout << " . " << name<< ".sh" << endl;1824 cout << "if test -f " << CmtSystem::quote (name, " \t") << ".sh; then" << endl; 1825 cout << " . " << CmtSystem::quote (name, " \t") << ".sh" << endl; 1800 1826 cout << 1801 1827 "if test $? != 0; then\n" … … 1806 1832 break; 1807 1833 case Bat : 1808 cout << "call " << name;1834 cout << "call " << CmtSystem::quote (name, " \t"); 1809 1835 result = 1; 1810 1836 break; … … 3067 3093 int result (0); 3068 3094 3069 if (use->get_package_name () == "CMT") return result;3095 //if (use->get_package_name () == "CMT") return result; 3070 3096 3071 3097 cmt_string discarded_text; -
CMT/HEAD/source/cmt_system.cxx
r561 r565 2188 2188 if (text.size () == 0) return result; 2189 2189 2190 int allocated = 3 * text.size (); // if EACH character of text quoted with " or '2190 size_t allocated = 3 * text.size (); // if EACH character of text quoted with " or ' 2191 2191 char* const buffer = (char*) malloc (allocated + 1); 2192 if (0 == buffer) 2193 { 2194 char num[32]; sprintf (num, "%u", allocated + 1); 2195 cmt_string msg ("Cannot allocate "); 2196 msg += num; 2197 msg += " bytes"; 2198 cmt_string e = errno ? ": " + cmt_string (strerror (errno)) : ""; 2199 CmtMessage::error (msg + e); 2200 exit (EXIT_FAILURE); 2201 } 2192 2202 char* b (buffer); 2193 2203 … … 2244 2254 result = buffer; 2245 2255 free (buffer); 2256 return result; 2257 } 2258 2259 //---------------------------------------------------------- 2260 // Mangle text so that it consists solely of 2261 // letters, digits, and underscores 2262 // the first character being not digit 2263 // (any other characters are replaced with character '_'). 2264 // The out can be used as shell variable name. 2265 // Return the number of characters replaced with character '_'. 2266 //---------------------------------------------------------- 2267 int CmtSystem::mangle (const cmt_string& text, cmt_string& out) 2268 { 2269 int result (0); 2270 size_t allocated = text.size (); 2271 //allocated = 3000000000; 2272 char* const buffer = (char*) malloc (allocated + 1); 2273 if (0 == buffer) 2274 { 2275 char num[32]; sprintf (num, "%u", allocated + 1); 2276 cmt_string msg ("Cannot allocate "); 2277 msg += num; 2278 msg += " bytes"; 2279 cmt_string e = errno ? ": " + cmt_string (strerror (errno)) : ""; 2280 CmtMessage::error (msg + e); 2281 exit (EXIT_FAILURE); 2282 } 2283 char* b (buffer); 2284 const char* t = text.c_str (); 2285 while (*t) 2286 { 2287 if (isalnum (*t) || *t == '_') 2288 *b++ = *t++; 2289 else 2290 { 2291 *b++ = '_'; t++; 2292 result++; 2293 } 2294 } 2295 *b = '\0'; 2296 if (0 != allocated && isdigit (*buffer)) 2297 { 2298 *buffer = '_'; 2299 result++; 2300 } 2301 out = buffer; 2302 free (buffer); 2303 return result; 2304 } 2305 2306 cmt_string CmtSystem::mangle (const cmt_string& text) 2307 { 2308 cmt_string result; 2309 mangle (text, result); 2246 2310 return result; 2247 2311 } -
CMT/HEAD/source/cmt_system.h
r561 r565 134 134 static cmt_string quote (const cmt_string& text, 135 135 const cmt_string& separators); 136 static int mangle (const cmt_string& text, cmt_string& out); 137 static cmt_string mangle (const cmt_string& text); 136 138 137 139 static void compress_path (const cmt_string& dir, cmt_string& new_dir);
Note: See TracChangeset
for help on using the changeset viewer.