# # # patch "mtn_cvs/cvs_client.cc" # from [97433a814c27a9862cf1530603747a98fb5e7728] # to [7eda53dd96c158ca46a7e16fd8d9bec0dabb957e] # ============================================================ --- mtn_cvs/cvs_client.cc 97433a814c27a9862cf1530603747a98fb5e7728 +++ mtn_cvs/cvs_client.cc 7eda53dd96c158ca46a7e16fd8d9bec0dabb957e @@ -1580,7 +1580,28 @@ int cvs_client::permissions2int(std::str int cvs_client::permissions2int(std::string const& p) { - return 0644; + std::vector parts; + stringtok(parts, p, ","); + int result=0; + for (std::vector::const_iterator i=parts.begin();i!=parts.end();++i) + { + if ((*i).empty()) continue; + I((*i)[1]=='='); + int shift=32, value=0; + switch ((*i)[0]) + { + case 'u': shift=6; break; + case 'g': shift=3; break; + case 'o': shift=0; break; + default: W(F("strange permission token : %s\n") % (*i)); + break; + } + if ((*i).find('r',2)!=std::string::npos) value|=4; + if ((*i).find('w',2)!=std::string::npos) value|=2; + if ((*i).find('x',2)!=std::string::npos) value|=1; + result|= value << shift; + } + return result; } std::string cvs_client::int2permissions(int p)