gmt 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47175ab0f9f220eec500e98bb1b392ec93ae42b61e13c851bae392a0dd4d9d08
4
- data.tar.gz: 0f24492604a31c82461d730be0afbc508849ff757939ac99596020f8ffe0c6f7
3
+ metadata.gz: 6ad7de33d11e4ab6419c28a78a14ba7ae9d5e0418485ab794060f8ca7a5a6f21
4
+ data.tar.gz: 11e72187266c674aad88d7597f2f50a2b714c2443820564a470bef2a180a5fdf
5
5
  SHA512:
6
- metadata.gz: 7fb19342fb1e3480531f02e1d9ca34203791820952c2d683d5294af027a5f9cc8205f9f2ed07fa452b7a0f9bb4dd51b9bafe36e7b08934e745fea6410cfb4c30
7
- data.tar.gz: 8e59daf96977b38a4498c7934d04ec302c7044a50af43e07ad36118742c87070d1d1eb268578f4c3a17c41a3c04912d3db1afd849b0e16d96cce98b7b13f9172
6
+ metadata.gz: 921660bab096dd80e3908914ceca695090c83c9a7a644be6b594dc51c448c03ae1d6d33de02f5f02dc028ea32496bd672d8ac3ff980d98ee1ec7ed0170788f35
7
+ data.tar.gz: ffc9d3d9a51563c4e0295ccf7c621053db09fb5c302639dcabe0e516a01c09415670e8eab9f012857b0d4ecfe119a4a38a85c6962b178dc90451951a35a027a3
data/ext/gmt/gmt.c CHANGED
@@ -4,6 +4,8 @@
4
4
  #include <gmt.h>
5
5
  #include <gmt_version.h>
6
6
 
7
+ #include <errno.h>
8
+
7
9
  #include "option.h"
8
10
 
9
11
  #define API_VER(major, minor, release) (10000 * major + 100 * minor + release)
@@ -17,18 +19,6 @@ typedef struct
17
19
 
18
20
  /* helpers */
19
21
 
20
- static void raise_unless_class_data(gmt_t *gmt)
21
- {
22
- if (gmt == NULL)
23
- rb_raise(rb_eRuntimeError, "failed fetch of GMT class data");
24
- }
25
-
26
- static void raise_if_error(int err, const char *module)
27
- {
28
- if (err)
29
- rb_raise(rb_eRuntimeError, "failed call to GMT module %s", module);
30
- }
31
-
32
22
  static void gmt_free(void*);
33
23
 
34
24
  static rb_data_type_t data_type = {
@@ -117,7 +107,9 @@ static VALUE gmt_simple(const char *name, int argc, VALUE *argv, VALUE self)
117
107
 
118
108
  gmt_t *gmt;
119
109
  TypedData_Get_Struct(self, gmt_t, &data_type, gmt);
120
- raise_unless_class_data(gmt);
110
+
111
+ if (gmt == NULL)
112
+ rb_raise(rb_eRuntimeError, "failed fetch of GMT class data");
121
113
 
122
114
  void *session = gmt->session;
123
115
 
@@ -125,10 +117,22 @@ static VALUE gmt_simple(const char *name, int argc, VALUE *argv, VALUE self)
125
117
  gmt_opts = ruby_array_to_gmt_options(opts, session);
126
118
  gmt_opts = append_inputs_to_gmt_options(files, gmt_opts, session);
127
119
 
120
+ errno = 0;
128
121
  int err = GMT_Call_Module(session, name, -1, gmt_opts);
122
+ int gmt_errno = errno;
129
123
 
130
124
  GMT_Destroy_Options(session, &gmt_opts);
131
- raise_if_error(err, name);
125
+
126
+ if (err != 0)
127
+ {
128
+ VALUE gmt_syserr;
129
+
130
+ if ((gmt_errno != 0) &&
131
+ ((gmt_syserr = rb_syserr_new(gmt_errno, NULL)) != 0))
132
+ rb_exc_raise(gmt_syserr);
133
+ else
134
+ rb_raise(rb_eRuntimeError, "failed call to GMT module %s", name);
135
+ }
132
136
 
133
137
  return Qtrue;
134
138
  }
data/ext/gmt/option.c CHANGED
@@ -32,7 +32,7 @@ static gmt_option_t* append_option(void *session,
32
32
  return GMT_Append_Option(session, gmt_opt, gmt_opts);
33
33
  }
34
34
 
35
- extern gmt_option_t* ruby_array_to_gmt_options(VALUE opts, void *session)
35
+ gmt_option_t* ruby_array_to_gmt_options(VALUE opts, void *session)
36
36
  {
37
37
  if (TYPE(opts) != T_ARRAY)
38
38
  rb_raise(rb_eArgError, "options should be an array");
@@ -74,9 +74,9 @@ extern gmt_option_t* ruby_array_to_gmt_options(VALUE opts, void *session)
74
74
  return gmt_opts;
75
75
  }
76
76
 
77
- extern gmt_option_t* append_inputs_to_gmt_options(VALUE files,
78
- gmt_option_t* gmt_opts,
79
- void *session)
77
+ gmt_option_t* append_inputs_to_gmt_options(VALUE files,
78
+ gmt_option_t *gmt_opts,
79
+ void *session)
80
80
  {
81
81
  if (TYPE(files) != T_ARRAY)
82
82
  rb_raise(rb_eArgError, "inputs should be an array");
data/ext/gmt/option.h CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  typedef struct GMT_OPTION gmt_option_t;
16
16
 
17
- extern gmt_option_t* ruby_array_to_gmt_options(VALUE, void*);
18
- extern gmt_option_t* append_inputs_to_gmt_options(VALUE, gmt_option_t*, void*);
17
+ gmt_option_t* ruby_array_to_gmt_options(VALUE, void*);
18
+ gmt_option_t* append_inputs_to_gmt_options(VALUE, gmt_option_t*, void*);
19
19
 
20
20
  #endif
data/lib/gmt.rb CHANGED
@@ -66,6 +66,18 @@
66
66
  #
67
67
  # using this format.
68
68
  #
69
+ # One occasionally has need for multiple calls to the same option: the
70
+ # <code>-B</code> option being the usual culprit. In this case, use a single
71
+ # <code>:B</code> key and an array of the arguments:
72
+ #
73
+ # B: [
74
+ # 'xa%g+l%s' % [dx, x_label],
75
+ # 'ya%g+l%s' % [dy, y_label],
76
+ # 'nWeS'
77
+ # ], ...
78
+ #
79
+ # for example.
80
+ #
69
81
  # == PostScript functions
70
82
  #
71
83
  # When creating complex PostScript plots one needs to make several calls to
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.J. Green
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-04 00:00:00.000000000 Z
11
+ date: 2024-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -131,7 +131,7 @@ requirements:
131
131
  - GMT5/6 development libraries (compile)
132
132
  - GMT5/6 installation (test)
133
133
  - ghostscript (test)
134
- rubygems_version: 3.1.2
134
+ rubygems_version: 3.2.3
135
135
  signing_key:
136
136
  specification_version: 4
137
137
  summary: Generic Mapping Tools (GMT)