|  | @@ -28,12 +28,6 @@
 | 
	
		
			
				|  |  |  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
	
		
			
				|  |  |  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#include <arpa/inet.h>
 | 
	
		
			
				|  |  | -#include <errno.h>
 | 
	
		
			
				|  |  | -#include <limits.h>
 | 
	
		
			
				|  |  | -#include <stdlib.h>
 | 
	
		
			
				|  |  | -#include <unistd.h>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  #include <fstream>
 | 
	
		
			
				|  |  |  #include <iostream>
 | 
	
		
			
				|  |  |  #include <sstream>
 | 
	
	
		
			
				|  | @@ -46,14 +40,6 @@
 | 
	
		
			
				|  |  |  #include <google/protobuf/descriptor.pb.h>
 | 
	
		
			
				|  |  |  #include <google/protobuf/stubs/strutil.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#ifndef htonl
 | 
	
		
			
				|  |  | -#include <netinet/in.h>
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -#ifndef O_EXLOCK
 | 
	
		
			
				|  |  | -#include <sys/file.h>
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  // NOTE: src/google/protobuf/compiler/plugin.cc makes use of cerr for some
 | 
	
		
			
				|  |  |  // error case, so it seem to be ok to use as a back door for errors.
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -65,7 +51,6 @@ namespace objectivec {
 | 
	
		
			
				|  |  |  namespace {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  hash_set<string> gClassWhitelist;
 | 
	
		
			
				|  |  | -stringstream gClassListStream;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // islower()/isupper()/tolower()/toupper() change based on locale.
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -754,7 +739,7 @@ string DefaultValue(const FieldDescriptor* field) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Must convert to a standard byte order for packing length into
 | 
	
		
			
				|  |  |          // a cstring.
 | 
	
		
			
				|  |  | -        uint32_t length = htonl(default_string.length());
 | 
	
		
			
				|  |  | +        uint32 length = ghtonl(default_string.length());
 | 
	
		
			
				|  |  |          string bytes((const char*)&length, sizeof(length));
 | 
	
		
			
				|  |  |          bytes.append(default_string);
 | 
	
		
			
				|  |  |          return "(NSData*)\"" + CEscape(bytes) + "\"";
 | 
	
	
		
			
				|  | @@ -809,60 +794,6 @@ string BuildCommentsString(const SourceLocation& location) {
 | 
	
		
			
				|  |  |    return final_comments;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -bool WriteClassList(string* error) {
 | 
	
		
			
				|  |  | -  const char* file_name = getenv("GPB_CLASSLIST_PATH");
 | 
	
		
			
				|  |  | -  if (file_name != NULL) {
 | 
	
		
			
				|  |  | -#ifndef O_EXLOCK
 | 
	
		
			
				|  |  | -    int fd = open(file_name, O_WRONLY | O_APPEND | O_CREAT,
 | 
	
		
			
				|  |  | -                  (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
 | 
	
		
			
				|  |  | -#else
 | 
	
		
			
				|  |  | -    int fd = open(file_name, O_WRONLY | O_APPEND | O_EXLOCK | O_CREAT,
 | 
	
		
			
				|  |  | -                  (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -    if (fd == -1) {
 | 
	
		
			
				|  |  | -      if (error != NULL) {
 | 
	
		
			
				|  |  | -        stringstream err_stream;
 | 
	
		
			
				|  |  | -        err_stream << endl << file_name << ":0:0: error:"
 | 
	
		
			
				|  |  | -                   << "Unable to open (" << errno << ")";
 | 
	
		
			
				|  |  | -        *error = err_stream.str();
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -#ifndef O_EXLOCK
 | 
	
		
			
				|  |  | -    if (flock(fd, LOCK_EX) < 0) {
 | 
	
		
			
				|  |  | -      if (error != NULL) {
 | 
	
		
			
				|  |  | -        stringstream err_stream;
 | 
	
		
			
				|  |  | -        err_stream << endl << file_name << ":0:0: error:"
 | 
	
		
			
				|  |  | -                   << "Unable to lock (" << errno << ")";
 | 
	
		
			
				|  |  | -        *error = err_stream.str();
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | -    // Need a local to hold the list so the cstring stays valid for the
 | 
	
		
			
				|  |  | -    // write call.
 | 
	
		
			
				|  |  | -    const string& class_list_str = gClassListStream.str();
 | 
	
		
			
				|  |  | -    int write_out = write(fd, class_list_str.c_str(), class_list_str.length());
 | 
	
		
			
				|  |  | -    int close_out = close(fd);
 | 
	
		
			
				|  |  | -    if (write_out == -1 || close_out == -1) {
 | 
	
		
			
				|  |  | -      if (error != NULL) {
 | 
	
		
			
				|  |  | -        stringstream err_stream;
 | 
	
		
			
				|  |  | -        err_stream << endl << file_name << ":0:0: error:"
 | 
	
		
			
				|  |  | -                   << "Unable to write (" << errno << ")";
 | 
	
		
			
				|  |  | -        *error = err_stream.str();
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  return true;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -void WriteClassNameToClassList(const string& name) {
 | 
	
		
			
				|  |  | -  if (gClassListStream.good()) {
 | 
	
		
			
				|  |  | -    gClassListStream << name << '\n';
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  bool InitializeClassWhitelist(string* error) {
 | 
	
		
			
				|  |  |    const char* env_var_value = getenv("GPB_OBJC_CLASS_WHITELIST_PATHS");
 | 
	
		
			
				|  |  |    if (env_var_value == NULL) {
 | 
	
	
		
			
				|  | @@ -917,7 +848,7 @@ bool FilterClass(const string& name) {
 | 
	
		
			
				|  |  |    return gClassWhitelist.size() > 0;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void TextFormatDecodeData::AddString(int32_t key,
 | 
	
		
			
				|  |  | +void TextFormatDecodeData::AddString(int32 key,
 | 
	
		
			
				|  |  |                                       const string& input_for_decode,
 | 
	
		
			
				|  |  |                                       const string& desired_output) {
 | 
	
		
			
				|  |  |    for (vector<DataEntry>::const_iterator i = entries_.begin();
 | 
	
	
		
			
				|  | @@ -973,14 +904,14 @@ class DecodeDataBuilder {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |   private:
 | 
	
		
			
				|  |  | -  static const uint8_t kAddUnderscore = 0b10000000;
 | 
	
		
			
				|  |  | +  static const uint8 kAddUnderscore = 0x80;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  static const uint8_t kOpAsIs = 0b00000000;
 | 
	
		
			
				|  |  | -  static const uint8_t kOpFirstUpper = 0b01000000;
 | 
	
		
			
				|  |  | -  static const uint8_t kOpFirstLower = 0b00100000;
 | 
	
		
			
				|  |  | -  static const uint8_t kOpAllUpper = 0b01100000;
 | 
	
		
			
				|  |  | +  static const uint8 kOpAsIs        = 0x00;
 | 
	
		
			
				|  |  | +  static const uint8 kOpFirstUpper  = 0x40;
 | 
	
		
			
				|  |  | +  static const uint8 kOpFirstLower  = 0x20;
 | 
	
		
			
				|  |  | +  static const uint8 kOpAllUpper    = 0x60;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  static const int kMaxSegmentLen = 0b00011111;
 | 
	
		
			
				|  |  | +  static const int kMaxSegmentLen     = 0x1f;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    void AddChar(const char desired) {
 | 
	
		
			
				|  |  |      ++segment_len_;
 | 
	
	
		
			
				|  | @@ -988,7 +919,7 @@ class DecodeDataBuilder {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    void Push() {
 | 
	
		
			
				|  |  | -    uint8_t op = (op_ | segment_len_);
 | 
	
		
			
				|  |  | +    uint8 op = (op_ | segment_len_);
 | 
	
		
			
				|  |  |      if (need_underscore_) op |= kAddUnderscore;
 | 
	
		
			
				|  |  |      if (op != 0) {
 | 
	
		
			
				|  |  |        decode_data_ += (char)op;
 | 
	
	
		
			
				|  | @@ -1020,7 +951,7 @@ class DecodeDataBuilder {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    bool need_underscore_;
 | 
	
		
			
				|  |  |    bool is_all_upper_;
 | 
	
		
			
				|  |  | -  uint8_t op_;
 | 
	
		
			
				|  |  | +  uint8 op_;
 | 
	
		
			
				|  |  |    int segment_len_;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    string decode_data_;
 |