diff options
author | Mike Buland <eichlan@xagasoft.com> | 2014-01-30 03:36:23 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2014-01-30 03:36:23 +0000 |
commit | 9072b0c98ba4f9412885a1a32002ee7214fd3dc0 (patch) | |
tree | 1f6f205c8f28da415fd12ce4a835b83efc52fb8c | |
parent | 86e37bec7b2101555635201f83352c0e054f1849 (diff) | |
download | libbu++-9072b0c98ba4f9412885a1a32002ee7214fd3dc0.tar.gz libbu++-9072b0c98ba4f9412885a1a32002ee7214fd3dc0.tar.bz2 libbu++-9072b0c98ba4f9412885a1a32002ee7214fd3dc0.tar.xz libbu++-9072b0c98ba4f9412885a1a32002ee7214fd3dc0.zip |
Attempting to fix OSX compatibility, it's not 100%, but it builds and most things seem to work. We've also tested against LLVM.
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | src/compat/osx.h | 23 | ||||
-rw-r--r-- | src/stable/minicron.cpp | 2 | ||||
-rw-r--r-- | src/stable/random.h | 2 | ||||
-rw-r--r-- | src/stable/sharedcore.h | 2 | ||||
-rw-r--r-- | src/stable/string.cpp | 16 | ||||
-rw-r--r-- | src/stable/string.h | 4 | ||||
-rw-r--r-- | src/unstable/cachebase.h | 2 | ||||
-rw-r--r-- | src/unstable/uuid.cpp | 18 |
9 files changed, 61 insertions, 10 deletions
@@ -46,7 +46,7 @@ $(foreach fn,$(wildcard src/experimental/*.h),bu/$(notdir ${fn})): bu/%: src/exp | |||
46 | ln -s ../$< $@ | 46 | ln -s ../$< $@ |
47 | 47 | ||
48 | $(patsubst src/%,bu/%,$(wildcard src/compat/*.h)): bu/%: src/% | 48 | $(patsubst src/%,bu/%,$(wildcard src/compat/*.h)): bu/%: src/% |
49 | ln -s ../../$< $@ | 49 | mkdir -p bu/compat; ln -s ../../$< $@ |
50 | 50 | ||
51 | autoconfig: autoconfig.cpp | 51 | autoconfig: autoconfig.cpp |
52 | ${CXX} -o autoconfig autoconfig.cpp | 52 | ${CXX} -o autoconfig autoconfig.cpp |
diff --git a/src/compat/osx.h b/src/compat/osx.h index 26dad4d..ae55507 100644 --- a/src/compat/osx.h +++ b/src/compat/osx.h | |||
@@ -21,6 +21,29 @@ | |||
21 | 21 | ||
22 | #include <sched.h> | 22 | #include <sched.h> |
23 | 23 | ||
24 | #define bu_inet_ntoa inet_ntoa | ||
25 | #define bu_inet_addr inet_addr | ||
26 | #define bu_select select | ||
27 | #define bu_socket socket | ||
28 | #define bu_shutdown shutdown | ||
29 | #define bu_htons htons | ||
30 | #define bu_htonl htonl | ||
31 | #define bu_gethostbyname gethostbyname | ||
32 | #define bu_freeaddrinfo freeaddrinfo | ||
33 | #define bu_getaddrinfo getaddrinfo | ||
34 | #define bu_connect connect | ||
35 | #define bu_getpeername getpeername | ||
36 | #define bu_setsockopt setsockopt | ||
37 | #define bu_bind bind | ||
38 | #define bu_listen listen | ||
39 | #define bu_accept accept | ||
40 | #define bu_send send | ||
41 | #define bu_recv recv | ||
42 | #define open64 open | ||
43 | #define lseek64 lseek | ||
44 | |||
45 | #define bu_gai_strerror gai_strerror | ||
46 | |||
24 | #define pthread_yield() sched_yield() | 47 | #define pthread_yield() sched_yield() |
25 | #endif /* __APPLE__ */ | 48 | #endif /* __APPLE__ */ |
26 | #endif | 49 | #endif |
diff --git a/src/stable/minicron.cpp b/src/stable/minicron.cpp index 2f7e868..9d98682 100644 --- a/src/stable/minicron.cpp +++ b/src/stable/minicron.cpp | |||
@@ -317,7 +317,7 @@ time_t Bu::MiniCron::TimerBasic::nextTime() | |||
317 | if( tLast == -1 ) | 317 | if( tLast == -1 ) |
318 | tLast = time( NULL ); | 318 | tLast = time( NULL ); |
319 | 319 | ||
320 | Bu::String::const_iterator i = sSpec.begin(); | 320 | Bu::String::const_iterator i = const_cast<const Bu::String &>(sSpec).begin(); |
321 | switch( lex( i ) ) | 321 | switch( lex( i ) ) |
322 | { | 322 | { |
323 | case tokDaily: | 323 | case tokDaily: |
diff --git a/src/stable/random.h b/src/stable/random.h index b02c9e5..6dc3b45 100644 --- a/src/stable/random.h +++ b/src/stable/random.h | |||
@@ -8,11 +8,11 @@ | |||
8 | #define BU_RANDOM_H | 8 | #define BU_RANDOM_H |
9 | 9 | ||
10 | #include "bu/singleton.h" | 10 | #include "bu/singleton.h" |
11 | #include "bu/randombase.h" | ||
11 | #include <stdint.h> | 12 | #include <stdint.h> |
12 | 13 | ||
13 | namespace Bu | 14 | namespace Bu |
14 | { | 15 | { |
15 | class RandomBase; | ||
16 | class Random : public Bu::Singleton<Bu::Random> | 16 | class Random : public Bu::Singleton<Bu::Random> |
17 | { | 17 | { |
18 | friend class Bu::Singleton<Bu::Random>; | 18 | friend class Bu::Singleton<Bu::Random>; |
diff --git a/src/stable/sharedcore.h b/src/stable/sharedcore.h index be60588..e79c3d6 100644 --- a/src/stable/sharedcore.h +++ b/src/stable/sharedcore.h | |||
@@ -104,7 +104,7 @@ namespace Bu | |||
104 | Shell clone() const | 104 | Shell clone() const |
105 | { | 105 | { |
106 | Shell s( dynamic_cast<const Shell &>(*this) ); | 106 | Shell s( dynamic_cast<const Shell &>(*this) ); |
107 | s._hardCopy(); | 107 | dynamic_cast<_SharedType &>(s)._hardCopy(); |
108 | return s; | 108 | return s; |
109 | } | 109 | } |
110 | 110 | ||
diff --git a/src/stable/string.cpp b/src/stable/string.cpp index bf3aac0..1ceaec1 100644 --- a/src/stable/string.cpp +++ b/src/stable/string.cpp | |||
@@ -173,6 +173,17 @@ Bu::String::String( const Bu::String::const_iterator &s, | |||
173 | append( s, e ); | 173 | append( s, e ); |
174 | } | 174 | } |
175 | 175 | ||
176 | Bu::String::String( const Bu::String::iterator &s ) | ||
177 | { | ||
178 | append( s ); | ||
179 | } | ||
180 | |||
181 | Bu::String::String( const Bu::String::iterator &s, | ||
182 | const Bu::String::iterator &e ) | ||
183 | { | ||
184 | append( s, e ); | ||
185 | } | ||
186 | |||
176 | Bu::String::~String() | 187 | Bu::String::~String() |
177 | { | 188 | { |
178 | } | 189 | } |
@@ -317,6 +328,11 @@ void Bu::String::append( const const_iterator &s, const const_iterator &e ) | |||
317 | } | 328 | } |
318 | } | 329 | } |
319 | 330 | ||
331 | void Bu::String::append( const iterator &s, const iterator &e ) | ||
332 | { | ||
333 | append( const_iterator( s ), const_iterator( e ) ); | ||
334 | } | ||
335 | |||
320 | void Bu::String::prepend( const String & sData ) | 336 | void Bu::String::prepend( const String & sData ) |
321 | { | 337 | { |
322 | prepend( sData.getStr(), sData.getSize() ); | 338 | prepend( sData.getStr(), sData.getSize() ); |
diff --git a/src/stable/string.h b/src/stable/string.h index 3f8452d..bd1fe6c 100644 --- a/src/stable/string.h +++ b/src/stable/string.h | |||
@@ -569,6 +569,8 @@ namespace Bu | |||
569 | String( long nSize ); | 569 | String( long nSize ); |
570 | String( const const_iterator &s ); | 570 | String( const const_iterator &s ); |
571 | String( const const_iterator &s, const const_iterator &e ); | 571 | String( const const_iterator &s, const const_iterator &e ); |
572 | String( const iterator &s ); | ||
573 | String( const iterator &s, const iterator &e ); | ||
572 | virtual ~String(); | 574 | virtual ~String(); |
573 | 575 | ||
574 | /** | 576 | /** |
@@ -646,6 +648,8 @@ namespace Bu | |||
646 | */ | 648 | */ |
647 | void append( const const_iterator &s, const const_iterator &e ); | 649 | void append( const const_iterator &s, const const_iterator &e ); |
648 | 650 | ||
651 | void append( const iterator &s, const iterator &e ); | ||
652 | |||
649 | /** | 653 | /** |
650 | * Prepend another String to this one. | 654 | * Prepend another String to this one. |
651 | *@param sData (String &) The String to prepend. | 655 | *@param sData (String &) The String to prepend. |
diff --git a/src/unstable/cachebase.h b/src/unstable/cachebase.h index bb543dd..f3152d9 100644 --- a/src/unstable/cachebase.h +++ b/src/unstable/cachebase.h | |||
@@ -238,7 +238,7 @@ namespace Bu | |||
238 | template<typename castto> | 238 | template<typename castto> |
239 | CachePtr<keytype, castto, basetype> cast() | 239 | CachePtr<keytype, castto, basetype> cast() |
240 | { | 240 | { |
241 | return pCache->cast<obtype, castto>( *this ); | 241 | return pCache->template cast<obtype, castto>( *this ); |
242 | } | 242 | } |
243 | 243 | ||
244 | bool operator==( const MyType &rhs ) const | 244 | bool operator==( const MyType &rhs ) const |
diff --git a/src/unstable/uuid.cpp b/src/unstable/uuid.cpp index 304ea4a..bd6662a 100644 --- a/src/unstable/uuid.cpp +++ b/src/unstable/uuid.cpp | |||
@@ -9,6 +9,7 @@ | |||
9 | #include "bu/file.h" | 9 | #include "bu/file.h" |
10 | #include "bu/formatter.h" | 10 | #include "bu/formatter.h" |
11 | #include "bu/membuf.h" | 11 | #include "bu/membuf.h" |
12 | #include "bu/random.h" | ||
12 | #include <string.h> | 13 | #include <string.h> |
13 | 14 | ||
14 | #ifdef WIN32 | 15 | #ifdef WIN32 |
@@ -83,6 +84,7 @@ void Bu::Uuid::clear() | |||
83 | 84 | ||
84 | Bu::Uuid Bu::Uuid::generate( Bu::Uuid::Type eType ) | 85 | Bu::Uuid Bu::Uuid::generate( Bu::Uuid::Type eType ) |
85 | { | 86 | { |
87 | Uuid id; | ||
86 | switch( eType ) | 88 | switch( eType ) |
87 | { | 89 | { |
88 | case Version1: | 90 | case Version1: |
@@ -90,19 +92,24 @@ Bu::Uuid Bu::Uuid::generate( Bu::Uuid::Type eType ) | |||
90 | case Version3: | 92 | case Version3: |
91 | case Version4: | 93 | case Version4: |
92 | case Version5: | 94 | case Version5: |
95 | // Yeah... all of these are just random for now, a lot more | ||
96 | // platform specific code is required for a lot of these. | ||
97 | for( int j = 0; j < 16; j++ ) | ||
98 | { | ||
99 | id.data[j] = Bu::Random::rand(256); | ||
100 | } | ||
101 | break; | ||
102 | |||
93 | default: | 103 | default: |
94 | case System: | 104 | case System: |
95 | #if defined(linux) | 105 | #if defined(linux) |
96 | Bu::File fIn( "/proc/sys/kernel/random/uuid", Bu::File::Read ); | 106 | Bu::File fIn( "/proc/sys/kernel/random/uuid", Bu::File::Read ); |
97 | char dat[36]; | 107 | char dat[36]; |
98 | fIn.read( dat, 36 ); | 108 | fIn.read( dat, 36 ); |
99 | Uuid id; | ||
100 | id.set( dat ); | 109 | id.set( dat ); |
101 | return id; | ||
102 | #elif defined(WIN32) | 110 | #elif defined(WIN32) |
103 | UUID uuid; | 111 | UUID uuid; |
104 | UuidCreate( &uuid ); | 112 | UuidCreate( &uuid ); |
105 | Uuid id; | ||
106 | id.data[0] = ((unsigned char *)&uuid.Data1)[3]; | 113 | id.data[0] = ((unsigned char *)&uuid.Data1)[3]; |
107 | id.data[1] = ((unsigned char *)&uuid.Data1)[2]; | 114 | id.data[1] = ((unsigned char *)&uuid.Data1)[2]; |
108 | id.data[2] = ((unsigned char *)&uuid.Data1)[1]; | 115 | id.data[2] = ((unsigned char *)&uuid.Data1)[1]; |
@@ -113,11 +120,12 @@ Bu::Uuid Bu::Uuid::generate( Bu::Uuid::Type eType ) | |||
113 | id.data[7] = ((unsigned char *)&uuid.Data3)[0]; | 120 | id.data[7] = ((unsigned char *)&uuid.Data3)[0]; |
114 | memcpy( id.data+8, uuid.Data4, 8 ); | 121 | memcpy( id.data+8, uuid.Data4, 8 ); |
115 | 122 | ||
116 | return id; | ||
117 | #else | 123 | #else |
118 | # error We should be using one of the other fallbacks, but your platform is not supported yet. Sorry. | 124 | #warning No platform specific UUID, falling back to random for now |
125 | return generate( Version4 ); | ||
119 | #endif | 126 | #endif |
120 | } | 127 | } |
128 | return id; | ||
121 | } | 129 | } |
122 | 130 | ||
123 | void Bu::Uuid::set( const Bu::String &sSrc ) | 131 | void Bu::Uuid::set( const Bu::String &sSrc ) |