rhodes 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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