]> git.saurik.com Git - apt.git/commitdiff
add "APT::String::Endswith" and automatic adding of ".list" in apt edit-source
authorMichael Vogt <mvo@debian.org>
Fri, 29 Nov 2013 07:35:05 +0000 (08:35 +0100)
committerMichael Vogt <mvo@debian.org>
Fri, 29 Nov 2013 07:37:54 +0000 (08:37 +0100)
apt-pkg/contrib/strutl.cc
apt-pkg/contrib/strutl.h
apt-private/private-sources.cc
test/libapt/strutil_test.cc

index 9f794927d0e3280f1a3f9e5072b28c0c896d533a..962112854d9a9a50d444d7acc4715dd3c259c067 100644 (file)
@@ -49,6 +49,14 @@ std::string Strip(const std::string &s)
    size_t end = s.find_last_not_of(" \t\n");
    return s.substr(start, end-start+1);
 }
+
+bool Endswith(const std::string &s, const std::string &end)
+{
+   if (end.size() > s.size())
+      return false;
+   return (s.substr(s.size() - end.size(), s.size()) == end);
+}
+
 }
 }
                                                                        /*}}}*/
index c8fc317c029685df1b1aa6b3a269785899076566..8d746f10eb348c7580722ffeda4cd03572948424 100644 (file)
@@ -36,6 +36,7 @@ using std::ostream;
 namespace APT {
    namespace String {
       std::string Strip(const std::string &s);
+      bool Endswith(const std::string &s, const std::string &ending);
    };
 };
 
index 37b0534bda63d63334644df67ad46583ee28b9b3..65706e785fcdf451caa214e858fa903e0f900ee5 100644 (file)
@@ -21,10 +21,13 @@ bool EditSources(CommandLine &CmdL)
 
    std::string sourceslist;
    if (CmdL.FileList[1] != NULL)
-      sourceslist = _config->FindDir("Dir::Etc::sourceparts") + CmdL.FileList[1] + ".list";
-   else
+   {
+      sourceslist = _config->FindDir("Dir::Etc::sourceparts") + CmdL.FileList[1];
+      if (!APT::String::Endswith(sourceslist, ".list"))
+         sourceslist += ".list";
+   } else {
       sourceslist = _config->FindFile("Dir::Etc::sourcelist");
-
+   }
    HashString before;
    if (FileExists(sourceslist))
        before.FromFile(sourceslist);
@@ -38,6 +41,7 @@ bool EditSources(CommandLine &CmdL)
          strprintf(outs, _("Failed to parse %s. Edit again? "),
                    sourceslist.c_str());
          std::cout << outs;
+         // FIXME: should we add a "restore previous" option here?
          res = !YnPrompt(true);
       }
       _error->RevertToStack();
index 110a20d277dd49ecb7f747e704fa9433c2621e4b..8215654d0dbc09d2056fb6899df8db91f5f81127 100644 (file)
@@ -69,5 +69,23 @@ int main(int argc,char *argv[])
    result = StringSplit(input, "");
    equals(result.size(), 0);
 
+   // endswith
+   bool b;
+   input = "abcd";
+   b = APT::String::Endswith(input, "d");
+   equals(b, true);
+
+   b = APT::String::Endswith(input, "cd");
+   equals(b, true);
+
+   b = APT::String::Endswith(input, "abcd");
+   equals(b, true);
+
+   b = APT::String::Endswith(input, "x");
+   equals(b, false);
+
+   b = APT::String::Endswith(input, "abcndefg");
+   equals(b, false);
+
    return 0;
 }