@ -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 = g htonl( 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 = 0b1000000 0;
static const uint8 kAddUnderscore = 0x8 0;
static const uint8_t kOpAsIs = 0b000000 00;
static const uint8_t kOpFirstUpper = 0b0100000 0;
static const uint8_t kOpFirstLower = 0b0010000 0;
static const uint8_t kOpAllUpper = 0b0110000 0;
static const uint8 kOpAsIs = 0x 00;
static const uint8 kOpFirstUpper = 0x4 0;
static const uint8 kOpFirstLower = 0x2 0;
static const uint8 kOpAllUpper = 0x6 0;
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_ ;