thorsson_cups 0.0.31 → 0.0.32
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.
- data/ext/cups.c +107 -10
- data/ext/extconf.rb +1 -1
- metadata +25 -37
data/ext/cups.c
CHANGED
|
@@ -156,7 +156,21 @@ static VALUE cups_print(VALUE self)
|
|
|
156
156
|
cupsFreeOptions(num_options, options);
|
|
157
157
|
|
|
158
158
|
rb_iv_set(self, "@job_id", INT2NUM(job_id));
|
|
159
|
-
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
// 25.03 free memory
|
|
162
|
+
if(fname != NULL)
|
|
163
|
+
free(fname);
|
|
164
|
+
|
|
165
|
+
if(url != NULL)
|
|
166
|
+
free(url);
|
|
167
|
+
|
|
168
|
+
if(target != NULL)
|
|
169
|
+
free(target);
|
|
170
|
+
|
|
171
|
+
if(http != NULL)
|
|
172
|
+
free(http);
|
|
173
|
+
|
|
160
174
|
return Qtrue;
|
|
161
175
|
}
|
|
162
176
|
|
|
@@ -177,6 +191,10 @@ static VALUE cups_show_dests(VALUE self)
|
|
|
177
191
|
VALUE destination = rb_str_new2(dest->name);
|
|
178
192
|
rb_ary_push(dest_list, destination); // Add this testination name to dest_list string
|
|
179
193
|
}
|
|
194
|
+
|
|
195
|
+
if(dests != NULL)
|
|
196
|
+
free(dests);
|
|
197
|
+
|
|
180
198
|
return dest_list;
|
|
181
199
|
}
|
|
182
200
|
|
|
@@ -193,6 +211,8 @@ static VALUE cups_get_default(VALUE self)
|
|
|
193
211
|
|
|
194
212
|
if (default_printer != NULL) {
|
|
195
213
|
VALUE def_p = rb_str_new2(default_printer);
|
|
214
|
+
if(default_printer != NULL)
|
|
215
|
+
free(default_printer);
|
|
196
216
|
return def_p;
|
|
197
217
|
}
|
|
198
218
|
// should return nil if no default printer is found!
|
|
@@ -217,6 +237,8 @@ static VALUE cups_cancel(VALUE self)
|
|
|
217
237
|
char *target = RSTRING_PTR(printer); // Target printer string
|
|
218
238
|
int cancellation;
|
|
219
239
|
cancellation = cupsCancelJob(target, job);
|
|
240
|
+
if(target != NULL)
|
|
241
|
+
free(target);
|
|
220
242
|
return Qtrue;
|
|
221
243
|
}
|
|
222
244
|
}
|
|
@@ -309,6 +331,12 @@ static VALUE cups_get_job_state(VALUE self)
|
|
|
309
331
|
|
|
310
332
|
jstate = ipp_state_to_symbol(job_state);
|
|
311
333
|
|
|
334
|
+
if(jobs != NULL)
|
|
335
|
+
free(jobs);
|
|
336
|
+
|
|
337
|
+
if(printer_arg != NULL)
|
|
338
|
+
free(printer_arg);
|
|
339
|
+
|
|
312
340
|
return jstate;
|
|
313
341
|
}
|
|
314
342
|
}
|
|
@@ -346,6 +374,12 @@ static VALUE cups_job_completed(VALUE self)
|
|
|
346
374
|
// Free job array
|
|
347
375
|
cupsFreeJobs(num_jobs, jobs);
|
|
348
376
|
|
|
377
|
+
if(jobs != NULL)
|
|
378
|
+
free(jobs);
|
|
379
|
+
|
|
380
|
+
if(printer_arg != NULL)
|
|
381
|
+
free(printer_arg);
|
|
382
|
+
|
|
349
383
|
if (job_state == IPP_JOB_COMPLETED) {
|
|
350
384
|
return Qtrue;
|
|
351
385
|
} else {
|
|
@@ -407,6 +441,12 @@ static VALUE cups_get_jobs(VALUE self, VALUE printer)
|
|
|
407
441
|
// Free job array
|
|
408
442
|
cupsFreeJobs(num_jobs, jobs);
|
|
409
443
|
|
|
444
|
+
if(jobs != NULL)
|
|
445
|
+
free(jobs);
|
|
446
|
+
if(printer_arg != NULL)
|
|
447
|
+
free(printer_arg);
|
|
448
|
+
|
|
449
|
+
|
|
410
450
|
return job_list;
|
|
411
451
|
}
|
|
412
452
|
|
|
@@ -420,10 +460,7 @@ static VALUE cups_cancel_print(int argc, VALUE* argv, VALUE self)
|
|
|
420
460
|
{
|
|
421
461
|
VALUE printer, job_id;
|
|
422
462
|
rb_scan_args(argc, argv, "20", &job_id, &printer);
|
|
423
|
-
|
|
424
|
-
VALUE url_path = cupsServer();
|
|
425
|
-
char *url = RSTRING_PTR(url_path);
|
|
426
|
-
|
|
463
|
+
|
|
427
464
|
if (NIL_P(job_id)) {
|
|
428
465
|
return Qfalse; // If @job_id is nil
|
|
429
466
|
} else { // Otherwise attempt to cancel
|
|
@@ -431,6 +468,10 @@ static VALUE cups_cancel_print(int argc, VALUE* argv, VALUE self)
|
|
|
431
468
|
char *target = RSTRING_PTR(printer); // Target printer string
|
|
432
469
|
int cancellation;
|
|
433
470
|
cancellation = cupsCancelJob(target, job);
|
|
471
|
+
|
|
472
|
+
if(target != NULL)
|
|
473
|
+
free(target);
|
|
474
|
+
|
|
434
475
|
return Qtrue;
|
|
435
476
|
}
|
|
436
477
|
}
|
|
@@ -454,10 +495,9 @@ static VALUE cups_get_device_uri(VALUE self, VALUE printer)
|
|
|
454
495
|
ipp_t *response;
|
|
455
496
|
ipp_attribute_t *attr;
|
|
456
497
|
char uri[1024];
|
|
457
|
-
char *location;
|
|
458
|
-
|
|
498
|
+
char *location;
|
|
459
499
|
char *name = RSTRING_PTR(printer);
|
|
460
|
-
|
|
500
|
+
|
|
461
501
|
request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
|
|
462
502
|
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, "localhost", 0, "/printers/%s", name);
|
|
463
503
|
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
|
|
@@ -466,10 +506,47 @@ static VALUE cups_get_device_uri(VALUE self, VALUE printer)
|
|
|
466
506
|
{
|
|
467
507
|
if((attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
|
|
468
508
|
{
|
|
469
|
-
|
|
509
|
+
if(http != NULL)
|
|
510
|
+
free(http);
|
|
511
|
+
|
|
512
|
+
if(request != NULL)
|
|
513
|
+
free(request);
|
|
514
|
+
|
|
515
|
+
if(response != NULL)
|
|
516
|
+
free(response);
|
|
517
|
+
|
|
518
|
+
if(attr != NULL)
|
|
519
|
+
free(attr);
|
|
520
|
+
|
|
521
|
+
if(location != NULL)
|
|
522
|
+
free(location);
|
|
523
|
+
|
|
524
|
+
if(name != NULL)
|
|
525
|
+
free(name);
|
|
526
|
+
return rb_str_new2(attr->values[0].string.text);
|
|
470
527
|
}
|
|
471
528
|
ippDelete(response);
|
|
472
|
-
}
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
if(http != NULL)
|
|
533
|
+
free(http);
|
|
534
|
+
|
|
535
|
+
if(request != NULL)
|
|
536
|
+
free(request);
|
|
537
|
+
|
|
538
|
+
if(response != NULL)
|
|
539
|
+
free(response);
|
|
540
|
+
|
|
541
|
+
if(attr != NULL)
|
|
542
|
+
free(attr);
|
|
543
|
+
|
|
544
|
+
if(location != NULL)
|
|
545
|
+
free(location);
|
|
546
|
+
|
|
547
|
+
if(name != NULL)
|
|
548
|
+
free(name);
|
|
549
|
+
|
|
473
550
|
return Qtrue;
|
|
474
551
|
}
|
|
475
552
|
|
|
@@ -499,6 +576,16 @@ static VALUE cups_get_options(VALUE self, VALUE printer)
|
|
|
499
576
|
|
|
500
577
|
if (dest == NULL) {
|
|
501
578
|
cupsFreeDests(num_dests, dests);
|
|
579
|
+
|
|
580
|
+
if(printer_arg != NULL)
|
|
581
|
+
free(printer_arg);
|
|
582
|
+
|
|
583
|
+
if(dests != NULL)
|
|
584
|
+
free(dests);
|
|
585
|
+
|
|
586
|
+
if(dest != NULL)
|
|
587
|
+
free(dest);
|
|
588
|
+
|
|
502
589
|
return Qnil;
|
|
503
590
|
} else {
|
|
504
591
|
for(i =0; i< dest->num_options; i++) {
|
|
@@ -506,6 +593,16 @@ static VALUE cups_get_options(VALUE self, VALUE printer)
|
|
|
506
593
|
}
|
|
507
594
|
|
|
508
595
|
cupsFreeDests(num_dests, dests);
|
|
596
|
+
|
|
597
|
+
if(printer_arg != NULL)
|
|
598
|
+
free(printer_arg);
|
|
599
|
+
|
|
600
|
+
if(dests != NULL)
|
|
601
|
+
free(dests);
|
|
602
|
+
|
|
603
|
+
if(dest != NULL)
|
|
604
|
+
free(dest);
|
|
605
|
+
|
|
509
606
|
return options_list;
|
|
510
607
|
}
|
|
511
608
|
|
data/ext/extconf.rb
CHANGED
metadata
CHANGED
|
@@ -1,35 +1,31 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: thorsson_cups
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
- 0
|
|
7
|
-
- 0
|
|
8
|
-
- 31
|
|
9
|
-
version: 0.0.31
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.32
|
|
5
|
+
prerelease:
|
|
10
6
|
platform: ruby
|
|
11
|
-
authors:
|
|
7
|
+
authors:
|
|
12
8
|
- Ivan Turkovic
|
|
13
9
|
- Chris Mowforth
|
|
14
10
|
autorequire:
|
|
15
11
|
bindir: bin
|
|
16
12
|
cert_chain: []
|
|
17
|
-
|
|
18
|
-
date: 2011-01-21 00:00:00 +01:00
|
|
13
|
+
date: 2011-03-25 00:00:00.000000000 +01:00
|
|
19
14
|
default_executable:
|
|
20
15
|
dependencies: []
|
|
16
|
+
description: ! ' Ruby CUPS provides a wrapper for the Common UNIX Printing System,
|
|
17
|
+
allowing rubyists to perform basic tasks like printer discovery, job submission
|
|
18
|
+
& querying.
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
email:
|
|
20
|
+
'
|
|
21
|
+
email:
|
|
24
22
|
- me@ivanturkovic.com
|
|
25
23
|
- chris@mowforth.com
|
|
26
24
|
executables: []
|
|
27
|
-
|
|
28
|
-
extensions:
|
|
25
|
+
extensions:
|
|
29
26
|
- ext/extconf.rb
|
|
30
27
|
extra_rdoc_files: []
|
|
31
|
-
|
|
32
|
-
files:
|
|
28
|
+
files:
|
|
33
29
|
- test/cups_test.rb
|
|
34
30
|
- test/sample.txt
|
|
35
31
|
- test/sample_blank.txt
|
|
@@ -41,34 +37,26 @@ files:
|
|
|
41
37
|
has_rdoc: true
|
|
42
38
|
homepage: https://github.com/Thorsson/cups
|
|
43
39
|
licenses: []
|
|
44
|
-
|
|
45
40
|
post_install_message:
|
|
46
41
|
rdoc_options: []
|
|
47
|
-
|
|
48
|
-
require_paths:
|
|
42
|
+
require_paths:
|
|
49
43
|
- lib
|
|
50
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
51
45
|
none: false
|
|
52
|
-
requirements:
|
|
53
|
-
- -
|
|
54
|
-
- !ruby/object:Gem::Version
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
version: "0"
|
|
58
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - ! '>='
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '0'
|
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
51
|
none: false
|
|
60
|
-
requirements:
|
|
61
|
-
- -
|
|
62
|
-
- !ruby/object:Gem::Version
|
|
63
|
-
|
|
64
|
-
- 0
|
|
65
|
-
version: "0"
|
|
52
|
+
requirements:
|
|
53
|
+
- - ! '>='
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: '0'
|
|
66
56
|
requirements: []
|
|
67
|
-
|
|
68
57
|
rubyforge_project: thorsson_cups
|
|
69
|
-
rubygems_version: 1.
|
|
58
|
+
rubygems_version: 1.5.2
|
|
70
59
|
signing_key:
|
|
71
60
|
specification_version: 3
|
|
72
61
|
summary: A lightweight Ruby library for printing.
|
|
73
62
|
test_files: []
|
|
74
|
-
|