]> git.saurik.com Git - apt.git/commitdiff
Use C locale instead of C.UTF-8 for protocol strings
authorJulian Andres Klode <jak@debian.org>
Tue, 23 Aug 2016 18:19:11 +0000 (20:19 +0200)
committerJulian Andres Klode <jak@debian.org>
Fri, 26 Aug 2016 20:17:13 +0000 (22:17 +0200)
The C.UTF-8 locale is not portable, so we need to use C, otherwise
we crash on other systems. We can use std::locale::classic() for
that, which might also be a bit cheaper than using locale("C").

apt-pkg/acquire-item.cc
apt-pkg/acquire.cc
apt-pkg/contrib/strutl.cc
apt-pkg/install-progress.cc

index 7abb7b206a6156a5d347fa8f247e43cef261749e..d72e627254dbaffd2e9abe345007cb94ff13b9e0 100644 (file)
@@ -2047,7 +2047,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/
    HashStringList ServerHashes;
    unsigned long long ServerSize = 0;
 
    HashStringList ServerHashes;
    unsigned long long ServerSize = 0;
 
-   auto const &posix = std::locale("C.UTF-8");
+   auto const &posix = std::locale::classic();
    for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
    {
       std::string tagname = *type;
    for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type)
    {
       std::string tagname = *type;
index 1efb772b41052da2e1c37b7dcdb696a1e803801b..33c98cf2e7527539cbdcc4eae5f1609606388953 100644 (file)
@@ -1259,7 +1259,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner)
 
       // build the status str
       std::ostringstream str;
 
       // build the status str
       std::ostringstream str;
-      str.imbue(std::locale("C.UTF-8"));
+      str.imbue(std::locale::classic());
       str.precision(4);
       str << "dlstatus" << ':' << std::fixed << i << ':' << Percent << ':' << msg << '\n';
       auto const dlstatus = str.str();
       str.precision(4);
       str << "dlstatus" << ':' << std::fixed << i << ':' << Percent << ':' << msg << '\n';
       auto const dlstatus = str.str();
index e7cc1a7592081143b30484afc899be7f52793a97..66b0078dc31f74a686cabe6d5266f27352665dfd 100644 (file)
@@ -759,7 +759,7 @@ string TimeRFC1123(time_t Date, bool const NumericTimezone)
    if (gmtime_r(&Date, &Conv) == NULL)
       return "";
 
    if (gmtime_r(&Date, &Conv) == NULL)
       return "";
 
-   auto const posix = std::locale("C.UTF-8");
+   auto const posix = std::locale::classic();
    std::ostringstream datestr;
    datestr.imbue(posix);
    APT::StringView const fmt("%a, %d %b %Y %H:%M:%S");
    std::ostringstream datestr;
    datestr.imbue(posix);
    APT::StringView const fmt("%a, %d %b %Y %H:%M:%S");
@@ -946,7 +946,7 @@ bool RFC1123StrToTime(const char* const str,time_t &time)
    signed int year = 0; // yes, Y23K problem – we gonna worry then…
    std::string weekday, month, datespec, timespec, zone;
    std::istringstream ss(str);
    signed int year = 0; // yes, Y23K problem – we gonna worry then…
    std::string weekday, month, datespec, timespec, zone;
    std::istringstream ss(str);
-   auto const &posix = std::locale("C.UTF-8");
+   auto const &posix = std::locale::classic();
    ss.imbue(posix);
    ss >> weekday;
    // we only superficially check weekday, mostly to avoid accepting localized
    ss.imbue(posix);
    ss >> weekday;
    // we only superficially check weekday, mostly to avoid accepting localized
index 2564954202adb0bc5303b4e12263d64971d1720c..6c3e51b2cb6a53cbecee107a0ee63b0597400952 100644 (file)
@@ -84,7 +84,7 @@ static std::string GetProgressFdString(char const * const status,
 {
    float const progress{Done / static_cast<float>(Total) * 100};
    std::ostringstream str;
 {
    float const progress{Done / static_cast<float>(Total) * 100};
    std::ostringstream str;
-   str.imbue(std::locale("C.UTF-8"));
+   str.imbue(std::locale::classic());
    str.precision(4);
    str << status << ':' << pkg << ':' << std::fixed << progress << ':' << msg << '\n';
    return str.str();
    str.precision(4);
    str << status << ':' << pkg << ':' << std::fixed << progress << ':' << msg << '\n';
    return str.str();
@@ -165,7 +165,7 @@ static std::string GetProgressDeb822String(char const * const status,
 {
    float const progress{Done / static_cast<float>(Total) * 100};
    std::ostringstream str;
 {
    float const progress{Done / static_cast<float>(Total) * 100};
    std::ostringstream str;
-   str.imbue(std::locale("C.UTF-8"));
+   str.imbue(std::locale::classic());
    str.precision(4);
    str << "Status: " << status << '\n';
    if (pkg != nullptr)
    str.precision(4);
    str << "Status: " << status << '\n';
    if (pkg != nullptr)