rhodes 1.4.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -341,72 +341,78 @@ void CRhodesApp::initHttpServer()
341
341
 
342
342
  const char* CRhodesApp::getFreeListeningPort()
343
343
  {
344
- #ifdef OS_MACOSX
345
- return "8080";
346
- #else
347
- if ( m_strListeningPorts.length() > 0 )
348
- return m_strListeningPorts.c_str();
349
-
350
- int noerrors = 1;
351
- LOG(INFO) + "Trying to get free listening port.";
352
-
353
- //get free port
354
- int sockfd = -1;
355
- struct sockaddr_in serv_addr = {0};
356
- //struct hostent *server = {0};
357
- //int result = -1;
358
-
359
- if ( noerrors )
360
- {
361
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
362
- if ( sockfd < 0 )
363
- {
364
- LOG(WARNING) + ("Unable to open socket");
365
- noerrors = 0;
366
- }
367
-
368
- if ( noerrors )
369
- {
370
- //server = gethostbyname( "localhost" );
371
-
372
- memset((void *) &serv_addr, 0, sizeof(serv_addr));
373
- serv_addr.sin_family = AF_INET;
374
- serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
375
- serv_addr.sin_port = htons(0);
376
-
377
- if ( bind( sockfd, (struct sockaddr *) &serv_addr, sizeof( serv_addr ) ) )
344
+ if ( m_strListeningPorts.length() > 0 )
345
+ return m_strListeningPorts.c_str();
346
+
347
+ int noerrors = 1;
348
+ LOG(INFO) + "Trying to get free listening port.";
349
+
350
+ //get free port
351
+ int sockfd = -1;
352
+ struct sockaddr_in serv_addr = {0};
353
+ //struct hostent *server = {0};
354
+ //int result = -1;
355
+
356
+ if ( noerrors )
357
+ {
358
+ sockfd = socket(AF_INET, SOCK_STREAM, 0);
359
+ if ( sockfd < 0 )
360
+ {
361
+ LOG(WARNING) + ("Unable to open socket");
362
+ noerrors = 0;
363
+ }
364
+
365
+ if ( noerrors )
366
+ {
367
+ //server = gethostbyname( "localhost" );
368
+
369
+ memset((void *) &serv_addr, 0, sizeof(serv_addr));
370
+ serv_addr.sin_family = AF_INET;
371
+ serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
372
+ serv_addr.sin_port = htons(8080);
373
+
374
+ if ( bind( sockfd, (struct sockaddr *) &serv_addr, sizeof( serv_addr ) ) )
378
375
  {
379
- LOG(WARNING) + "Unable to bind";
380
- noerrors = 0;
376
+ serv_addr.sin_port = htons(0);
377
+ if ( bind( sockfd, (struct sockaddr *) &serv_addr, sizeof( serv_addr ) ) )
378
+ {
379
+ LOG(WARNING) + "Unable to bind";
380
+ noerrors = 0;
381
+ }
381
382
  }
382
- else
383
- {
384
- char buf[10] = {0};
385
- /*socklen_t*/int length = sizeof( serv_addr );
386
-
387
- getsockname( sockfd, (struct sockaddr *)&serv_addr, &length );
388
-
389
- sprintf(buf,"%d",ntohs(serv_addr.sin_port));
390
-
391
- m_strListeningPorts = buf;
392
- }
393
- //Clean up
383
+
384
+ if ( noerrors )
385
+ {
386
+ char buf[10] = {0};
387
+ #ifdef OS_MACOSX
388
+ socklen_t
389
+ #else
390
+ int
391
+ #endif
392
+ length = sizeof( serv_addr );
393
+
394
+ getsockname( sockfd, (struct sockaddr *)&serv_addr, &length );
395
+
396
+ sprintf(buf,"%d",ntohs(serv_addr.sin_port));
397
+
398
+ m_strListeningPorts = buf;
399
+ }
400
+ //Clean up
394
401
  #if defined(OS_ANDROID)
395
- close(sockfd);
402
+ close(sockfd);
396
403
  #else
397
- closesocket(sockfd);
398
- #endif
399
- }
400
-
401
- }
402
-
403
- if ( !noerrors )
404
- m_strListeningPorts = "8080";
405
-
406
- LOG(INFO) + "Free listening port: " + m_strListeningPorts;
407
-
408
- return m_strListeningPorts.c_str();
404
+ closesocket(sockfd);
409
405
  #endif
406
+ }
407
+
408
+ }
409
+
410
+ if ( !noerrors )
411
+ m_strListeningPorts = "8080";
412
+
413
+ LOG(INFO) + "Free listening port: " + m_strListeningPorts;
414
+
415
+ return m_strListeningPorts.c_str();
410
416
  }
411
417
 
412
418
  void CRhodesApp::initAppUrls()
@@ -446,6 +452,11 @@ const String& CRhodesApp::getStartUrl()
446
452
  return m_strStartUrl;
447
453
  }
448
454
 
455
+ const char* rho_rhodesapp_gethomeurl()
456
+ {
457
+ return RHODESAPP().getHomeUrl().c_str();
458
+ }
459
+
449
460
  const String& CRhodesApp::getOptionsUrl()
450
461
  {
451
462
  m_strOptionsUrl = canonicalizeRhoUrl( RHOCONF().getString("options_path") );
@@ -746,6 +757,11 @@ const char* rho_rhodesapp_getstarturl()
746
757
  return RHODESAPP().getStartUrl().c_str();
747
758
  }
748
759
 
760
+ const char* rho_rhodesapp_gethomeurl()
761
+ {
762
+ return RHODESAPP().getHomeUrl().c_str();
763
+ }
764
+
749
765
  const char* rho_rhodesapp_getoptionsurl()
750
766
  {
751
767
  return RHODESAPP().getOptionsUrl().c_str();
@@ -66,6 +66,7 @@ public:
66
66
  const String& getOptionsUrl();
67
67
  const String& getCurrentUrl(int index = 0);
68
68
  const String& getFirstStartUrl();
69
+ const String& getHomeUrl(){ return m_strHomeUrl; }
69
70
 
70
71
  const String& getLoadingPagePath(){return m_strLoadingPagePath; }
71
72
  const String& getBlobsDirPath(){return m_strBlobsDirPath; }
@@ -13,7 +13,7 @@ extern void mapview_create(int nparams, char** params, int nannotations, char**
13
13
  $1 = $3 = 0;
14
14
  if (input_arr) {
15
15
  VALUE main_keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
16
- int mk,main_keys_len = RARRAY_LEN(main_keys_arr);
16
+ int mk,main_keys_len = RARRAY_LEN(main_keys_arr);
17
17
  for(mk=0; mk<main_keys_len; mk++) {
18
18
  VALUE main_key = rb_ary_entry(main_keys_arr, mk);
19
19
  VALUE main_data = rb_hash_aref($input,main_key);
@@ -33,52 +33,34 @@ extern void mapview_create(int nparams, char** params, int nannotations, char**
33
33
  case T_STRING:
34
34
  tmp = StringValuePtr(data);
35
35
  break;
36
- case T_TRUE:
37
- case T_FALSE:
38
- case T_SYMBOL:
39
- val = rb_funcall(data, rb_intern("to_s"), 0, NULL);
40
- tmp = StringValuePtr(val);
41
- break;
42
36
  case T_ARRAY:
43
37
  {
44
38
  int alen = RARRAY_LEN(data);
45
- char **arr = (char **)malloc((alen+1)*sizeof(char*));
46
- for(i=0;i<alen;i++) {
39
+ char **arr = (char **)malloc((alen+1)*sizeof(char*));
40
+ for(i=0;i<alen;i++) {
47
41
  VALUE item = rb_ary_entry(data,i);
48
- switch(TYPE(item)) {
49
- case T_STRING:
50
- tmp = StringValuePtr(item);
51
- break;
52
- case T_FLOAT:
53
- case T_RATIONAL:
54
- case T_SYMBOL:
55
- val = rb_funcall(item, rb_intern("to_s"), 0, NULL);
56
- tmp = StringValuePtr(val);
57
- break;
58
- default:
59
- tmp = "";
60
- break;
61
- }
42
+ if (TYPE(item) != T_STRING)
43
+ item = rb_funcall(item, rb_intern("to_s"), 0, NULL);
44
+ tmp = StringValuePtr(item);
62
45
  arr[i] = tmp;
63
- }
46
+ }
64
47
  arr[alen] = NULL;
65
48
  tmp = (char*)arr;
66
49
  }
67
50
  break;
68
51
  default:
69
- tmp = NULL;
70
- break;
52
+ val = rb_funcall(data, rb_intern("to_s"), 0, NULL);
53
+ tmp = StringValuePtr(val);
71
54
  }
72
55
  settings[arr_len++] = key_str;
73
56
  settings[arr_len++] = tmp;
74
- }
57
+ }
75
58
 
76
59
  $1 = arr_len;
77
- $2 = settings;
78
-
60
+ $2 = settings;
79
61
  } else if (!strcmp(main_key_str,"annotations")) {
80
62
  int arr_len = 0;
81
- len = RARRAY_LEN(main_data);
63
+ len = RARRAY_LEN(main_data);
82
64
  ret_val = (char **)malloc(6*len*sizeof(char*));
83
65
  for(i=0; i<len; i++) {
84
66
  char *lat, *lon, *addr, *title, *subtitle, *url;
@@ -93,20 +75,9 @@ extern void mapview_create(int nparams, char** params, int nannotations, char**
93
75
  VALUE key = rb_ary_entry(keys_arr, j);
94
76
  VALUE data = rb_hash_aref(hash,key);
95
77
  char *key_str = StringValuePtr(key);
96
- switch(TYPE(data)) {
97
- case T_STRING:
98
- tmp = StringValuePtr(data);
99
- break;
100
- case T_FLOAT:
101
- case T_RATIONAL:
102
- case T_SYMBOL:
103
- val = rb_funcall(data, rb_intern("to_s"), 0, NULL);
104
- tmp = StringValuePtr(val);
105
- break;
106
- default:
107
- tmp = "";
108
- break;
109
- }
78
+ if (TYPE(data) != T_STRING)
79
+ data = rb_funcall(data, rb_intern("to_s"), 0, NULL);
80
+ tmp = StringValuePtr(data);
110
81
  if (!strcmp(key_str,"latitude")) {
111
82
  lat = tmp;
112
83
  } else if (!strcmp(key_str, "longitude")) {
@@ -126,12 +97,11 @@ extern void mapview_create(int nparams, char** params, int nannotations, char**
126
97
  ret_val[arr_len++] = addr;
127
98
  ret_val[arr_len++] = title;
128
99
  ret_val[arr_len++] = subtitle;
129
- ret_val[arr_len++] = url;
100
+ ret_val[arr_len++] = url;
130
101
  } /* for(i=0; i<len; i++) */
131
102
 
132
103
  $3 = arr_len;
133
- $4 = ret_val;
134
-
104
+ $4 = ret_val;
135
105
  } /* if (!strcmp(key_str,"annotations")) */
136
106
  } /* for(mk=0; mk<main_keys_len; mk++) */
137
107
  } /* if (input_arr) */
@@ -144,4 +114,4 @@ extern void mapview_create(int nparams, char** params, int nannotations, char**
144
114
  free((void *) $4);
145
115
  }
146
116
 
147
- extern void create(int nparams, char** params, int nannotations, char** annotation);
117
+ extern void create(int nparams, char** params, int nannotations, char** annotation);
@@ -998,10 +998,10 @@ extern "C" {
998
998
  /* Global Ruby hash table to store Trackings from C/C++
999
999
  structs to Ruby Objects. */
1000
1000
  static VALUE swig_ruby_trackings;
1001
-
1002
- /* Global variable that stores a reference to the ruby
1003
- hash table delete function. */
1004
- static ID swig_ruby_hash_delete = 0;
1001
+
1002
+ /* Global variable that stores a reference to the ruby
1003
+ hash table delete function. */
1004
+ static ID swig_ruby_hash_delete = 0;
1005
1005
 
1006
1006
  /* Setup a Ruby hash table to store Trackings */
1007
1007
  SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
@@ -1011,9 +1011,9 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
1011
1011
  swig_ruby_trackings = rb_hash_new();
1012
1012
  rb_gc_register_address(&swig_ruby_trackings);
1013
1013
 
1014
- /* Now store a reference to the hash table delete function
1015
- so that we only have to look it up once.*/
1016
- swig_ruby_hash_delete = rb_intern("delete");
1014
+ /* Now store a reference to the hash table delete function
1015
+ so that we only have to look it up once.*/
1016
+ swig_ruby_hash_delete = rb_intern("delete");
1017
1017
  }
1018
1018
 
1019
1019
  /* Get a Ruby number to reference a pointer */
@@ -1631,7 +1631,7 @@ _wrap_create(int argc, VALUE *argv, VALUE self) {
1631
1631
  arg1 = arg3 = 0;
1632
1632
  if (input_arr) {
1633
1633
  VALUE main_keys_arr = rb_funcall(argv[0], rb_intern("keys"), 0, NULL);
1634
- int mk,main_keys_len = RARRAY_LEN(main_keys_arr);
1634
+ int mk,main_keys_len = RARRAY_LEN(main_keys_arr);
1635
1635
  for(mk=0; mk<main_keys_len; mk++) {
1636
1636
  VALUE main_key = rb_ary_entry(main_keys_arr, mk);
1637
1637
  VALUE main_data = rb_hash_aref(argv[0],main_key);
@@ -1651,32 +1651,15 @@ _wrap_create(int argc, VALUE *argv, VALUE self) {
1651
1651
  case T_STRING:
1652
1652
  tmp = StringValuePtr(data);
1653
1653
  break;
1654
- case T_TRUE:
1655
- case T_FALSE:
1656
- case T_SYMBOL:
1657
- val = rb_funcall(data, rb_intern("to_s"), 0, NULL);
1658
- tmp = StringValuePtr(val);
1659
- break;
1660
1654
  case T_ARRAY:
1661
1655
  {
1662
1656
  int alen = RARRAY_LEN(data);
1663
1657
  char **arr = (char **)malloc((alen+1)*sizeof(char*));
1664
1658
  for(i=0;i<alen;i++) {
1665
1659
  VALUE item = rb_ary_entry(data,i);
1666
- switch(TYPE(item)) {
1667
- case T_STRING:
1668
- tmp = StringValuePtr(item);
1669
- break;
1670
- case T_FLOAT:
1671
- case T_RATIONAL:
1672
- case T_SYMBOL:
1673
- val = rb_funcall(item, rb_intern("to_s"), 0, NULL);
1674
- tmp = StringValuePtr(val);
1675
- break;
1676
- default:
1677
- tmp = "";
1678
- break;
1679
- }
1660
+ if (TYPE(item) != T_STRING)
1661
+ item = rb_funcall(item, rb_intern("to_s"), 0, NULL);
1662
+ tmp = StringValuePtr(item);
1680
1663
  arr[i] = tmp;
1681
1664
  }
1682
1665
  arr[alen] = NULL;
@@ -1684,16 +1667,15 @@ _wrap_create(int argc, VALUE *argv, VALUE self) {
1684
1667
  }
1685
1668
  break;
1686
1669
  default:
1687
- tmp = NULL;
1688
- break;
1670
+ val = rb_funcall(data, rb_intern("to_s"), 0, NULL);
1671
+ tmp = StringValuePtr(val);
1689
1672
  }
1690
1673
  settings[arr_len++] = key_str;
1691
1674
  settings[arr_len++] = tmp;
1692
- }
1675
+ }
1693
1676
 
1694
1677
  arg1 = arr_len;
1695
- arg2 = settings;
1696
-
1678
+ arg2 = settings;
1697
1679
  } else if (!strcmp(main_key_str,"annotations")) {
1698
1680
  int arr_len = 0;
1699
1681
  len = RARRAY_LEN(main_data);
@@ -1711,20 +1693,9 @@ _wrap_create(int argc, VALUE *argv, VALUE self) {
1711
1693
  VALUE key = rb_ary_entry(keys_arr, j);
1712
1694
  VALUE data = rb_hash_aref(hash,key);
1713
1695
  char *key_str = StringValuePtr(key);
1714
- switch(TYPE(data)) {
1715
- case T_STRING:
1716
- tmp = StringValuePtr(data);
1717
- break;
1718
- case T_FLOAT:
1719
- case T_RATIONAL:
1720
- case T_SYMBOL:
1721
- val = rb_funcall(data, rb_intern("to_s"), 0, NULL);
1722
- tmp = StringValuePtr(val);
1723
- break;
1724
- default:
1725
- tmp = "";
1726
- break;
1727
- }
1696
+ if (TYPE(data) != T_STRING)
1697
+ data = rb_funcall(data, rb_intern("to_s"), 0, NULL);
1698
+ tmp = StringValuePtr(data);
1728
1699
  if (!strcmp(key_str,"latitude")) {
1729
1700
  lat = tmp;
1730
1701
  } else if (!strcmp(key_str, "longitude")) {
@@ -1744,12 +1715,11 @@ _wrap_create(int argc, VALUE *argv, VALUE self) {
1744
1715
  ret_val[arr_len++] = addr;
1745
1716
  ret_val[arr_len++] = title;
1746
1717
  ret_val[arr_len++] = subtitle;
1747
- ret_val[arr_len++] = url;
1718
+ ret_val[arr_len++] = url;
1748
1719
  } /* for(i=0; i<len; i++) */
1749
1720
 
1750
1721
  arg3 = arr_len;
1751
- arg4 = ret_val;
1752
-
1722
+ arg4 = ret_val;
1753
1723
  } /* if (!strcmp(key_str,"annotations")) */
1754
1724
  } /* for(mk=0; mk<main_keys_len; mk++) */
1755
1725
  } /* if (input_arr) */
@@ -30,6 +30,8 @@ char* get_property(char* property) {
30
30
  return "WINDOWS";
31
31
  #elif defined(__SYMBIAN32__)
32
32
  return "SYMBIAN";
33
+ #elif defined(OS_ANDROID)
34
+ return "ANDROID";
33
35
  #else
34
36
  return "UNKNOWN";
35
37
  #endif
@@ -1,3 +1,4 @@
1
+ require 'yaml'
1
2
 
2
3
  unless File.exists? "build.yml"
3
4
  puts "Cannot find build.yml"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhodes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rhomobile
@@ -2527,7 +2527,6 @@ files:
2527
2527
  - lib/test/syncdb.sqlite
2528
2528
  - LICENSE
2529
2529
  - LICENSING_OPTIONS
2530
- - Manifest.txt
2531
2530
  - platform/android/build/android.rake
2532
2531
  - platform/android/build/androidcommon.rb
2533
2532
  - platform/android/build/libcurl_build.files
@@ -5727,7 +5726,6 @@ files:
5727
5726
  - res/generators/templates/spec/app/spec_runner.rb
5728
5727
  - res/generators/templates/spec/app/SpecRunner/controller.rb
5729
5728
  - res/generators/templates/spec/app/SpecRunner/index.erb
5730
- - rhobuild.yml
5731
5729
  - rhobuild.yml.example
5732
5730
  - rhodes.gemspec
5733
5731
  - spec/framework_spec/app/Account/config.rb