Fix deadlock.
[ardour.git] / libs / pbd / convert.cc
index fc84bbad5e060fe9a8402595548e5be051ad2c65..bda0683910661f6f9e352fbe86e7fd8ff85c7795 100644 (file)
@@ -20,6 +20,8 @@
 #include <cmath>
 #include <stdint.h>
 #include <stdlib.h>
+#include <cstdio>
+#include <ctype.h>
 #ifndef __STDC_FORMAT_MACROS
 #define __STDC_FORMAT_MACROS
 #endif
@@ -35,6 +37,17 @@ using Glib::ustring;
 
 namespace PBD {
 
+string
+capitalize (const string& str)
+{
+        string ret = str;
+        if (!str.empty()) {
+                /* XXX not unicode safe */
+                ret[0] = toupper (str[0]);
+        }
+        return ret;
+}
+
 string
 short_version (string orig, string::size_type target_length)
 {
@@ -105,6 +118,18 @@ atoi (const string& s)
        return ::atoi (s.c_str());
 }
 
+int32_t
+atol (const string& s)
+{
+       return (int32_t) ::atol (s.c_str());
+}
+
+int64_t
+atoll (const string& s)
+{
+       return (int64_t) ::atoll (s.c_str());
+}
+
 double
 atof (const string& s)
 {
@@ -281,11 +306,14 @@ length2string (const int64_t frames, const double sample_rate)
        
        return duration_str;
 }
+
 static bool 
 chars_equal_ignore_case(char x, char y)
 {
-       static std::locale loc;
-       return toupper(x, loc) == toupper(y, loc);
+       /* app should have called setlocale() if its wants this comparison to be
+          locale sensitive.
+       */
+       return toupper (x) == toupper (y);
 }
 
 bool