gmt 0.2.4 → 0.2.5

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.
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)