smb 0.5.0 → 0.5.1
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/smb/extconf.rb +14 -4
- data/ext/smb/smb.c +278 -33
- data/ext/smb/smb.cr +61 -1
- data/ext/smb/smb.rd +33 -0
- data/lib/smb/version.rb +1 -1
- metadata +37 -52
data/ext/smb/extconf.rb
CHANGED
@@ -19,13 +19,23 @@ end
|
|
19
19
|
# Look for headers in {gem_root}/ext/{package}
|
20
20
|
if use_gems
|
21
21
|
%w[
|
22
|
-
gdk_pixbuf2 atk gtk2
|
23
|
-
|
24
|
-
|
22
|
+
gdk_pixbuf2 atk gtk2].each do |package|
|
23
|
+
require package
|
24
|
+
if Gem.loaded_specs[package]
|
25
|
+
$CFLAGS += " -I" + Gem.loaded_specs[package].full_gem_path + "/ext/" + package
|
26
|
+
else
|
27
|
+
if fn = $".find { |n| n.sub(/[.](so|rb)$/,'') == package }
|
28
|
+
dr = $:.find { |d| File.exist?(File.join(d, fn)) }
|
29
|
+
pt = File.join(dr,fn) if dr && fn
|
30
|
+
else
|
31
|
+
pt = "??"
|
32
|
+
end
|
33
|
+
STDERR.puts "require '" + package + "' loaded '"+pt+"' instead of the gem - trying to continue, but build may fail"
|
34
|
+
end
|
25
35
|
end
|
26
36
|
end
|
27
37
|
if RbConfig::CONFIG.has_key?('rubyhdrdir')
|
28
|
-
$CFLAGS += " -I" + RbConfig::CONFIG['rubyhdrdir']+'/ruby'
|
38
|
+
$CFLAGS += " -I" + RbConfig::CONFIG['rubyhdrdir']+'/ruby'
|
29
39
|
end
|
30
40
|
|
31
41
|
$CFLAGS += " -I."
|
data/ext/smb/smb.c
CHANGED
@@ -111,7 +111,11 @@ static VALUE rubber_enum_cmp(VALUE value, VALUE other)
|
|
111
111
|
VALUE a,b;
|
112
112
|
a = rb_funcall(value, rb_intern("to_i"), 0);
|
113
113
|
b = rb_funcall(other, rb_intern("to_i"), 0);
|
114
|
+
#ifdef RB_NUM_COERCE_FUNCS_NEED_OPID
|
115
|
+
return rb_num_coerce_cmp(a, b, rb_intern("=="));
|
116
|
+
#else
|
114
117
|
return rb_num_coerce_cmp(a, b);
|
118
|
+
#endif
|
115
119
|
}
|
116
120
|
|
117
121
|
static VALUE rubber_enum_to_i(VALUE value)
|
@@ -210,6 +214,39 @@ static VALUE
|
|
210
214
|
Dir_url(VALUE self);
|
211
215
|
static VALUE
|
212
216
|
Dir_close(VALUE self);
|
217
|
+
static VALUE cStat;
|
218
|
+
static VALUE
|
219
|
+
Stat_exist_query(VALUE self);
|
220
|
+
static VALUE
|
221
|
+
Stat_dev(VALUE self);
|
222
|
+
static VALUE
|
223
|
+
Stat_ino(VALUE self);
|
224
|
+
static VALUE
|
225
|
+
Stat_mode(VALUE self);
|
226
|
+
static VALUE
|
227
|
+
Stat_nlink(VALUE self);
|
228
|
+
static VALUE
|
229
|
+
Stat_uid(VALUE self);
|
230
|
+
static VALUE
|
231
|
+
Stat_gid(VALUE self);
|
232
|
+
static VALUE
|
233
|
+
Stat_rdev(VALUE self);
|
234
|
+
static VALUE
|
235
|
+
Stat_blksize(VALUE self);
|
236
|
+
static VALUE
|
237
|
+
Stat_blocks(VALUE self);
|
238
|
+
static VALUE
|
239
|
+
Stat_size(VALUE self);
|
240
|
+
static VALUE
|
241
|
+
Stat_directory_query(VALUE self);
|
242
|
+
static VALUE
|
243
|
+
Stat_file_query(VALUE self);
|
244
|
+
static VALUE
|
245
|
+
Stat_regular_query(VALUE self);
|
246
|
+
static VALUE
|
247
|
+
Stat_symlink_query(VALUE self);
|
248
|
+
static VALUE
|
249
|
+
Stat_fifo_query(VALUE self);
|
213
250
|
static VALUE cFile;
|
214
251
|
static VALUE
|
215
252
|
File_CLASS_new(VALUE self, VALUE __v_url, VALUE __v_flags, VALUE __v_mode);
|
@@ -246,8 +283,8 @@ File_CLASS_read(VALUE self, VALUE __v_url);
|
|
246
283
|
static volatile VALUE auth_block = Qnil;
|
247
284
|
|
248
285
|
static void smbc_get_auth_data(const char *srv, const char *shr,
|
249
|
-
char *wg, int wglen,
|
250
|
-
char *un, int unlen,
|
286
|
+
char *wg, int wglen,
|
287
|
+
char *un, int unlen,
|
251
288
|
char *pw, int pwlen)
|
252
289
|
{
|
253
290
|
volatile VALUE ret= Qnil;
|
@@ -301,7 +338,7 @@ static VALUE stat_new(struct stat *st)
|
|
301
338
|
nst = ALLOC(struct stat);
|
302
339
|
*nst = *st;
|
303
340
|
}
|
304
|
-
return Data_Wrap_Struct(
|
341
|
+
return Data_Wrap_Struct(cStat, NULL, free, nst);
|
305
342
|
}
|
306
343
|
|
307
344
|
|
@@ -348,7 +385,7 @@ SMB_CLASS_init(int __p_argc, VALUE *__p_argv, VALUE self)
|
|
348
385
|
debug = 0;
|
349
386
|
|
350
387
|
|
351
|
-
#line
|
388
|
+
#line 129 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
352
389
|
auth_block = block;
|
353
390
|
rb_gc_register_address(&auth_block);
|
354
391
|
if (smbc_init(smbc_get_auth_data, debug) < 0) { rb_sys_fail("smbc_init failed");
|
@@ -378,8 +415,7 @@ CTX_CLASS___alloc__(VALUE self)
|
|
378
415
|
SMBCCTX * ctx =
|
379
416
|
smbc_new_context();
|
380
417
|
volatile VALUE obj ;
|
381
|
-
|
382
|
-
obj = Data_Wrap_Struct(self, NULL, smbc_free_context, ctx);
|
418
|
+
obj = Data_Wrap_Struct(self, NULL, smbc_free_context, ctx);
|
383
419
|
do { __p_retval = obj; goto out; } while(0);
|
384
420
|
|
385
421
|
} while(0);
|
@@ -393,7 +429,7 @@ CTX_initialize(VALUE self)
|
|
393
429
|
{
|
394
430
|
SMBCCTX *ctx; Data_Get_Struct(self, SMBCCTX, ctx);
|
395
431
|
|
396
|
-
#line
|
432
|
+
#line 99 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
397
433
|
smbc_init_context(ctx);
|
398
434
|
|
399
435
|
return Qnil;
|
@@ -421,7 +457,7 @@ SMBCCTX *ctx; Data_Get_Struct(self, SMBCCTX, ctx);
|
|
421
457
|
mode = 0666;
|
422
458
|
|
423
459
|
|
424
|
-
#line
|
460
|
+
#line 105 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
425
461
|
|
426
462
|
do {
|
427
463
|
volatile VALUE rfile ;
|
@@ -465,7 +501,7 @@ SMBCCTX *ctx; Data_Get_Struct(self, SMBCCTX, ctx);
|
|
465
501
|
mode = 0666;
|
466
502
|
|
467
503
|
|
468
|
-
#line
|
504
|
+
#line 111 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
469
505
|
|
470
506
|
do {
|
471
507
|
volatile VALUE rfile ;
|
@@ -488,7 +524,7 @@ SMBCCTX *ctx; Data_Get_Struct(self, SMBCCTX, ctx);
|
|
488
524
|
Check_Type(sfile, T_DATA);
|
489
525
|
Check_Type(data, T_STRING);
|
490
526
|
|
491
|
-
#line
|
527
|
+
#line 117 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
492
528
|
|
493
529
|
do {
|
494
530
|
SMBCFILE * file ;
|
@@ -508,7 +544,7 @@ CTX_file_close(VALUE self, VALUE sfile)
|
|
508
544
|
SMBCCTX *ctx; Data_Get_Struct(self, SMBCCTX, ctx);
|
509
545
|
Check_Type(sfile, T_DATA);
|
510
546
|
|
511
|
-
#line
|
547
|
+
#line 122 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
512
548
|
|
513
549
|
do {
|
514
550
|
SMBCFILE * file ;
|
@@ -528,7 +564,7 @@ Dir_CLASS_new(VALUE self, VALUE __v_url)
|
|
528
564
|
char * url; char * __orig_url;
|
529
565
|
__orig_url = url = ( NIL_P(__v_url) ? NULL : StringValuePtr(__v_url) );
|
530
566
|
|
531
|
-
#line
|
567
|
+
#line 144 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
532
568
|
|
533
569
|
do {
|
534
570
|
volatile VALUE val ;
|
@@ -552,7 +588,7 @@ Dir_CLASS_rmdir(VALUE self, VALUE __v_url)
|
|
552
588
|
char * url; char * __orig_url;
|
553
589
|
__orig_url = url = ( NIL_P(__v_url) ? NULL : StringValuePtr(__v_url) );
|
554
590
|
|
555
|
-
#line
|
591
|
+
#line 160 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
556
592
|
if (smbc_rmdir(url) < 0) rb_sys_fail(url);
|
557
593
|
|
558
594
|
return Qnil;
|
@@ -566,7 +602,7 @@ Dir_CLASS_mkdir(VALUE self, VALUE __v_url, VALUE __v_mode)
|
|
566
602
|
__orig_url = url = ( NIL_P(__v_url) ? NULL : StringValuePtr(__v_url) );
|
567
603
|
__orig_mode = mode = NUM2INT(__v_mode);
|
568
604
|
|
569
|
-
#line
|
605
|
+
#line 164 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
570
606
|
if (smbc_mkdir(url, mode) < 0) rb_sys_fail(url);
|
571
607
|
|
572
608
|
return Qnil;
|
@@ -577,7 +613,7 @@ Dir_initialize(VALUE self)
|
|
577
613
|
{
|
578
614
|
rb_smbprivate *dir; Data_Get_Struct(self, rb_smbprivate, dir);
|
579
615
|
|
580
|
-
#line
|
616
|
+
#line 171 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
581
617
|
|
582
618
|
return Qnil;
|
583
619
|
}
|
@@ -588,7 +624,7 @@ Dir_read_entry(VALUE self)
|
|
588
624
|
VALUE __p_retval = Qnil;
|
589
625
|
rb_smbprivate *dir; Data_Get_Struct(self, rb_smbprivate, dir);
|
590
626
|
|
591
|
-
#line
|
627
|
+
#line 173 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
592
628
|
|
593
629
|
do {
|
594
630
|
struct smbc_dirent* de ;
|
@@ -607,7 +643,7 @@ Dir_read(VALUE self)
|
|
607
643
|
VALUE __p_retval = Qnil;
|
608
644
|
rb_smbprivate *dir; Data_Get_Struct(self, rb_smbprivate, dir);
|
609
645
|
|
610
|
-
#line
|
646
|
+
#line 184 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
611
647
|
|
612
648
|
do {
|
613
649
|
struct smbc_dirent* de ;
|
@@ -626,7 +662,7 @@ Dir_tell(VALUE self)
|
|
626
662
|
VALUE __p_retval = Qnil;
|
627
663
|
rb_smbprivate *dir; Data_Get_Struct(self, rb_smbprivate, dir);
|
628
664
|
|
629
|
-
#line
|
665
|
+
#line 190 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
630
666
|
do { __p_retval = INT2NUM(smbc_telldir(dir->handle)); goto out; } while(0);
|
631
667
|
out:
|
632
668
|
return __p_retval;
|
@@ -638,7 +674,7 @@ Dir_url(VALUE self)
|
|
638
674
|
VALUE __p_retval = Qnil;
|
639
675
|
rb_smbprivate *dir; Data_Get_Struct(self, rb_smbprivate, dir);
|
640
676
|
|
641
|
-
#line
|
677
|
+
#line 193 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
642
678
|
do { __p_retval = rb_str_new2(dir->url); goto out; } while(0);
|
643
679
|
out:
|
644
680
|
return __p_retval;
|
@@ -649,13 +685,205 @@ Dir_close(VALUE self)
|
|
649
685
|
{
|
650
686
|
rb_smbprivate *dir; Data_Get_Struct(self, rb_smbprivate, dir);
|
651
687
|
|
652
|
-
#line
|
688
|
+
#line 196 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
653
689
|
smbc_closedir(dir->handle);
|
654
690
|
dir->handle = 0;
|
655
691
|
|
656
692
|
return Qnil;
|
657
693
|
}
|
658
694
|
|
695
|
+
static VALUE
|
696
|
+
Stat_exist_query(VALUE self)
|
697
|
+
{
|
698
|
+
VALUE __p_retval = Qnil;
|
699
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
700
|
+
|
701
|
+
#line 204 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
702
|
+
do { __p_retval = (((!!s)) ? Qtrue : Qfalse); goto out; } while(0);
|
703
|
+
out:
|
704
|
+
return __p_retval;
|
705
|
+
}
|
706
|
+
|
707
|
+
static VALUE
|
708
|
+
Stat_dev(VALUE self)
|
709
|
+
{
|
710
|
+
VALUE __p_retval = Qnil;
|
711
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
712
|
+
|
713
|
+
#line 207 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
714
|
+
do { __p_retval = LONG2NUM(s->st_dev); goto out; } while(0);
|
715
|
+
out:
|
716
|
+
return __p_retval;
|
717
|
+
}
|
718
|
+
|
719
|
+
static VALUE
|
720
|
+
Stat_ino(VALUE self)
|
721
|
+
{
|
722
|
+
VALUE __p_retval = Qnil;
|
723
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
724
|
+
|
725
|
+
#line 210 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
726
|
+
do { __p_retval = LONG2NUM(s->st_ino); goto out; } while(0);
|
727
|
+
out:
|
728
|
+
return __p_retval;
|
729
|
+
}
|
730
|
+
|
731
|
+
static VALUE
|
732
|
+
Stat_mode(VALUE self)
|
733
|
+
{
|
734
|
+
VALUE __p_retval = Qnil;
|
735
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
736
|
+
|
737
|
+
#line 213 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
738
|
+
do { __p_retval = LONG2NUM(s->st_mode); goto out; } while(0);
|
739
|
+
out:
|
740
|
+
return __p_retval;
|
741
|
+
}
|
742
|
+
|
743
|
+
static VALUE
|
744
|
+
Stat_nlink(VALUE self)
|
745
|
+
{
|
746
|
+
VALUE __p_retval = Qnil;
|
747
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
748
|
+
|
749
|
+
#line 216 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
750
|
+
do { __p_retval = LONG2NUM(s->st_nlink); goto out; } while(0);
|
751
|
+
out:
|
752
|
+
return __p_retval;
|
753
|
+
}
|
754
|
+
|
755
|
+
static VALUE
|
756
|
+
Stat_uid(VALUE self)
|
757
|
+
{
|
758
|
+
VALUE __p_retval = Qnil;
|
759
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
760
|
+
|
761
|
+
#line 220 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
762
|
+
do { __p_retval = LONG2NUM(s->st_uid); goto out; } while(0);
|
763
|
+
out:
|
764
|
+
return __p_retval;
|
765
|
+
}
|
766
|
+
|
767
|
+
static VALUE
|
768
|
+
Stat_gid(VALUE self)
|
769
|
+
{
|
770
|
+
VALUE __p_retval = Qnil;
|
771
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
772
|
+
|
773
|
+
#line 223 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
774
|
+
do { __p_retval = LONG2NUM(s->st_gid); goto out; } while(0);
|
775
|
+
out:
|
776
|
+
return __p_retval;
|
777
|
+
}
|
778
|
+
|
779
|
+
static VALUE
|
780
|
+
Stat_rdev(VALUE self)
|
781
|
+
{
|
782
|
+
VALUE __p_retval = Qnil;
|
783
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
784
|
+
|
785
|
+
#line 226 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
786
|
+
do { __p_retval = LONG2NUM(s->st_rdev); goto out; } while(0);
|
787
|
+
out:
|
788
|
+
return __p_retval;
|
789
|
+
}
|
790
|
+
|
791
|
+
static VALUE
|
792
|
+
Stat_blksize(VALUE self)
|
793
|
+
{
|
794
|
+
VALUE __p_retval = Qnil;
|
795
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
796
|
+
|
797
|
+
#line 230 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
798
|
+
do { __p_retval = LONG2NUM(s->st_blksize); goto out; } while(0);
|
799
|
+
out:
|
800
|
+
return __p_retval;
|
801
|
+
}
|
802
|
+
|
803
|
+
static VALUE
|
804
|
+
Stat_blocks(VALUE self)
|
805
|
+
{
|
806
|
+
VALUE __p_retval = Qnil;
|
807
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
808
|
+
|
809
|
+
#line 233 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
810
|
+
do { __p_retval = LONG2NUM(s->st_blocks); goto out; } while(0);
|
811
|
+
out:
|
812
|
+
return __p_retval;
|
813
|
+
}
|
814
|
+
|
815
|
+
static VALUE
|
816
|
+
Stat_size(VALUE self)
|
817
|
+
{
|
818
|
+
VALUE __p_retval = Qnil;
|
819
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
820
|
+
|
821
|
+
#line 237 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
822
|
+
do { __p_retval = LONG2NUM(s->st_size); goto out; } while(0);
|
823
|
+
out:
|
824
|
+
return __p_retval;
|
825
|
+
}
|
826
|
+
|
827
|
+
static VALUE
|
828
|
+
Stat_directory_query(VALUE self)
|
829
|
+
{
|
830
|
+
VALUE __p_retval = Qnil;
|
831
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
832
|
+
|
833
|
+
#line 241 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
834
|
+
do { __p_retval = ((S_ISDIR(s->st_mode)) ? Qtrue : Qfalse); goto out; } while(0);
|
835
|
+
out:
|
836
|
+
return __p_retval;
|
837
|
+
}
|
838
|
+
|
839
|
+
static VALUE
|
840
|
+
Stat_file_query(VALUE self)
|
841
|
+
{
|
842
|
+
VALUE __p_retval = Qnil;
|
843
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
844
|
+
|
845
|
+
#line 244 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
846
|
+
do { __p_retval = ((S_ISREG(s->st_mode)) ? Qtrue : Qfalse); goto out; } while(0);
|
847
|
+
out:
|
848
|
+
return __p_retval;
|
849
|
+
}
|
850
|
+
|
851
|
+
static VALUE
|
852
|
+
Stat_regular_query(VALUE self)
|
853
|
+
{
|
854
|
+
VALUE __p_retval = Qnil;
|
855
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
856
|
+
|
857
|
+
#line 247 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
858
|
+
do { __p_retval = ((S_ISREG(s->st_mode)) ? Qtrue : Qfalse); goto out; } while(0);
|
859
|
+
out:
|
860
|
+
return __p_retval;
|
861
|
+
}
|
862
|
+
|
863
|
+
static VALUE
|
864
|
+
Stat_symlink_query(VALUE self)
|
865
|
+
{
|
866
|
+
VALUE __p_retval = Qnil;
|
867
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
868
|
+
|
869
|
+
#line 250 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
870
|
+
do { __p_retval = ((S_ISLNK(s->st_mode)) ? Qtrue : Qfalse); goto out; } while(0);
|
871
|
+
out:
|
872
|
+
return __p_retval;
|
873
|
+
}
|
874
|
+
|
875
|
+
static VALUE
|
876
|
+
Stat_fifo_query(VALUE self)
|
877
|
+
{
|
878
|
+
VALUE __p_retval = Qnil;
|
879
|
+
struct stat *s; Data_Get_Struct(self, struct stat, s);
|
880
|
+
|
881
|
+
#line 253 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
882
|
+
do { __p_retval = ((S_ISFIFO(s->st_mode)) ? Qtrue : Qfalse); goto out; } while(0);
|
883
|
+
out:
|
884
|
+
return __p_retval;
|
885
|
+
}
|
886
|
+
|
659
887
|
static VALUE
|
660
888
|
File_CLASS_new(VALUE self, VALUE __v_url, VALUE __v_flags, VALUE __v_mode)
|
661
889
|
{
|
@@ -667,7 +895,7 @@ File_CLASS_new(VALUE self, VALUE __v_url, VALUE __v_flags, VALUE __v_mode)
|
|
667
895
|
__orig_flags = flags = NUM2INT(__v_flags);
|
668
896
|
__orig_mode = mode = NUM2INT(__v_mode);
|
669
897
|
|
670
|
-
#line
|
898
|
+
#line 259 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
671
899
|
|
672
900
|
do {
|
673
901
|
volatile VALUE val ;
|
@@ -696,7 +924,7 @@ File_CLASS_create(VALUE self, VALUE __v_url, VALUE __v_mode)
|
|
696
924
|
__orig_url = url = ( NIL_P(__v_url) ? NULL : StringValuePtr(__v_url) );
|
697
925
|
__orig_mode = mode = NUM2INT(__v_mode);
|
698
926
|
|
699
|
-
#line
|
927
|
+
#line 277 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
700
928
|
|
701
929
|
do {
|
702
930
|
volatile VALUE val ;
|
@@ -722,7 +950,7 @@ File_CLASS_unlink(VALUE self, VALUE __v_url)
|
|
722
950
|
char * url; char * __orig_url;
|
723
951
|
__orig_url = url = ( NIL_P(__v_url) ? NULL : StringValuePtr(__v_url) );
|
724
952
|
|
725
|
-
#line
|
953
|
+
#line 295 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
726
954
|
if (smbc_unlink(url) < 0) rb_sys_fail(url);
|
727
955
|
|
728
956
|
return Qnil;
|
@@ -736,7 +964,7 @@ File_CLASS_rename(VALUE self, VALUE __v_ourl, VALUE __v_nurl)
|
|
736
964
|
__orig_ourl = ourl = ( NIL_P(__v_ourl) ? NULL : StringValuePtr(__v_ourl) );
|
737
965
|
__orig_nurl = nurl = ( NIL_P(__v_nurl) ? NULL : StringValuePtr(__v_nurl) );
|
738
966
|
|
739
|
-
#line
|
967
|
+
#line 299 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
740
968
|
if (smbc_rename(ourl, nurl) < 0) rb_sys_fail(ourl);
|
741
969
|
|
742
970
|
return Qnil;
|
@@ -749,7 +977,7 @@ File_CLASS_stat(VALUE self, VALUE __v_url)
|
|
749
977
|
char * url; char * __orig_url;
|
750
978
|
__orig_url = url = ( NIL_P(__v_url) ? NULL : StringValuePtr(__v_url) );
|
751
979
|
|
752
|
-
#line
|
980
|
+
#line 303 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
753
981
|
|
754
982
|
do {
|
755
983
|
struct stat s ;
|
@@ -767,7 +995,7 @@ File_initialize(VALUE self)
|
|
767
995
|
{
|
768
996
|
rb_smbprivate *file; Data_Get_Struct(self, rb_smbprivate, file);
|
769
997
|
|
770
|
-
#line
|
998
|
+
#line 312 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
771
999
|
|
772
1000
|
return Qnil;
|
773
1001
|
}
|
@@ -778,7 +1006,7 @@ File_stat(VALUE self)
|
|
778
1006
|
VALUE __p_retval = Qnil;
|
779
1007
|
rb_smbprivate *file; Data_Get_Struct(self, rb_smbprivate, file);
|
780
1008
|
|
781
|
-
#line
|
1009
|
+
#line 314 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
782
1010
|
|
783
1011
|
do {
|
784
1012
|
struct stat s ;
|
@@ -797,7 +1025,7 @@ File_url(VALUE self)
|
|
797
1025
|
VALUE __p_retval = Qnil;
|
798
1026
|
rb_smbprivate *file; Data_Get_Struct(self, rb_smbprivate, file);
|
799
1027
|
|
800
|
-
#line
|
1028
|
+
#line 320 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
801
1029
|
do { __p_retval = rb_str_new2(file->url); goto out; } while(0);
|
802
1030
|
out:
|
803
1031
|
return __p_retval;
|
@@ -813,7 +1041,7 @@ rb_smbprivate *file; Data_Get_Struct(self, rb_smbprivate, file);
|
|
813
1041
|
__orig_offset = offset = NUM2OFFT(__v_offset);
|
814
1042
|
__orig_whence = whence = NUM2INT(__v_whence);
|
815
1043
|
|
816
|
-
#line
|
1044
|
+
#line 323 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
817
1045
|
do { __p_retval = INT2NUM(smbc_lseek(file->handle, offset, whence)); goto out; } while(0);
|
818
1046
|
out:
|
819
1047
|
;
|
@@ -838,7 +1066,7 @@ rb_smbprivate *file; Data_Get_Struct(self, rb_smbprivate, file);
|
|
838
1066
|
bytes_to_read = -1;
|
839
1067
|
|
840
1068
|
|
841
|
-
#line
|
1069
|
+
#line 326 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
842
1070
|
|
843
1071
|
do {
|
844
1072
|
size_t read ;
|
@@ -872,7 +1100,7 @@ File_write(VALUE self, VALUE buf)
|
|
872
1100
|
rb_smbprivate *file; Data_Get_Struct(self, rb_smbprivate, file);
|
873
1101
|
Check_Type(buf, T_STRING);
|
874
1102
|
|
875
|
-
#line
|
1103
|
+
#line 363 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
876
1104
|
|
877
1105
|
do {
|
878
1106
|
int i ;
|
@@ -892,7 +1120,7 @@ File_close(VALUE self)
|
|
892
1120
|
{
|
893
1121
|
rb_smbprivate *file; Data_Get_Struct(self, rb_smbprivate, file);
|
894
1122
|
|
895
|
-
#line
|
1123
|
+
#line 371 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
896
1124
|
smbc_close(file->handle);
|
897
1125
|
file->handle = 0;
|
898
1126
|
|
@@ -906,7 +1134,7 @@ File_CLASS_read(VALUE self, VALUE __v_url)
|
|
906
1134
|
char * url; char * __orig_url;
|
907
1135
|
__orig_url = url = ( NIL_P(__v_url) ? NULL : StringValuePtr(__v_url) );
|
908
1136
|
|
909
|
-
#line
|
1137
|
+
#line 376 "/home/geoff/Projects/smb-ruby/ext/smb/smb.cr"
|
910
1138
|
|
911
1139
|
do {
|
912
1140
|
size_t read ;
|
@@ -1002,6 +1230,23 @@ rb_gc_register_address(&_gcpool_Credentials);
|
|
1002
1230
|
rb_define_method(cDir, "tell", Dir_tell, 0);
|
1003
1231
|
rb_define_method(cDir, "url", Dir_url, 0);
|
1004
1232
|
rb_define_method(cDir, "close", Dir_close, 0);
|
1233
|
+
cStat = rb_define_class_under(mSMB, "Stat", rb_cObject);
|
1234
|
+
rb_define_method(cStat, "exist?", Stat_exist_query, 0);
|
1235
|
+
rb_define_method(cStat, "dev", Stat_dev, 0);
|
1236
|
+
rb_define_method(cStat, "ino", Stat_ino, 0);
|
1237
|
+
rb_define_method(cStat, "mode", Stat_mode, 0);
|
1238
|
+
rb_define_method(cStat, "nlink", Stat_nlink, 0);
|
1239
|
+
rb_define_method(cStat, "uid", Stat_uid, 0);
|
1240
|
+
rb_define_method(cStat, "gid", Stat_gid, 0);
|
1241
|
+
rb_define_method(cStat, "rdev", Stat_rdev, 0);
|
1242
|
+
rb_define_method(cStat, "blksize", Stat_blksize, 0);
|
1243
|
+
rb_define_method(cStat, "blocks", Stat_blocks, 0);
|
1244
|
+
rb_define_method(cStat, "size", Stat_size, 0);
|
1245
|
+
rb_define_method(cStat, "directory?", Stat_directory_query, 0);
|
1246
|
+
rb_define_method(cStat, "file?", Stat_file_query, 0);
|
1247
|
+
rb_define_method(cStat, "regular?", Stat_regular_query, 0);
|
1248
|
+
rb_define_method(cStat, "symlink?", Stat_symlink_query, 0);
|
1249
|
+
rb_define_method(cStat, "fifo?", Stat_fifo_query, 0);
|
1005
1250
|
cFile = rb_define_class_under(mSMB, "File", rb_cObject);
|
1006
1251
|
rb_define_singleton_method(cFile, "new", File_CLASS_new, 3);
|
1007
1252
|
rb_define_singleton_method(cFile, "create", File_CLASS_create, 2);
|
data/ext/smb/smb.cr
CHANGED
@@ -66,7 +66,7 @@ static VALUE stat_new(struct stat *st)
|
|
66
66
|
nst = ALLOC(struct stat);
|
67
67
|
*nst = *st;
|
68
68
|
}
|
69
|
-
return Data_Wrap_Struct(
|
69
|
+
return Data_Wrap_Struct(cStat, NULL, free, nst);
|
70
70
|
}
|
71
71
|
|
72
72
|
%}
|
@@ -198,6 +198,66 @@ module SMB
|
|
198
198
|
dir->handle = 0;
|
199
199
|
end
|
200
200
|
end
|
201
|
+
|
202
|
+
class Stat
|
203
|
+
pre_func struct stat *s; Data_Get_Struct(self, struct stat, s);
|
204
|
+
def bool:exist?
|
205
|
+
return (!!s);
|
206
|
+
end
|
207
|
+
def long:dev
|
208
|
+
return s->st_dev;
|
209
|
+
end
|
210
|
+
def long:ino
|
211
|
+
return s->st_ino;
|
212
|
+
end
|
213
|
+
def long:mode
|
214
|
+
return s->st_mode;
|
215
|
+
end
|
216
|
+
def long:nlink
|
217
|
+
return s->st_nlink;
|
218
|
+
end
|
219
|
+
|
220
|
+
def long:uid
|
221
|
+
return s->st_uid;
|
222
|
+
end
|
223
|
+
def long:gid
|
224
|
+
return s->st_gid;
|
225
|
+
end
|
226
|
+
def long:rdev
|
227
|
+
return s->st_rdev;
|
228
|
+
end
|
229
|
+
|
230
|
+
def long:blksize
|
231
|
+
return s->st_blksize;
|
232
|
+
end
|
233
|
+
def long:blocks
|
234
|
+
return s->st_blocks;
|
235
|
+
end
|
236
|
+
|
237
|
+
def long:size
|
238
|
+
return s->st_size;
|
239
|
+
end
|
240
|
+
|
241
|
+
def bool:directory?
|
242
|
+
return S_ISDIR(s->st_mode);
|
243
|
+
end
|
244
|
+
def bool:file?
|
245
|
+
return S_ISREG(s->st_mode);
|
246
|
+
end
|
247
|
+
def bool:regular?
|
248
|
+
return S_ISREG(s->st_mode);
|
249
|
+
end
|
250
|
+
def bool:symlink?
|
251
|
+
return S_ISLNK(s->st_mode);
|
252
|
+
end
|
253
|
+
def bool:fifo?
|
254
|
+
return S_ISFIFO(s->st_mode);
|
255
|
+
end
|
256
|
+
|
257
|
+
def bool:zero?
|
258
|
+
return (s->st_size == 0);
|
259
|
+
end
|
260
|
+
end
|
201
261
|
|
202
262
|
class File
|
203
263
|
def self.new(char *url, int flags, int mode)
|
data/ext/smb/smb.rd
CHANGED
@@ -48,6 +48,39 @@
|
|
48
48
|
|
49
49
|
--- SMB::Dir#close
|
50
50
|
|
51
|
+
== class SMB::Stat
|
52
|
+
--- SMB::Stat#exist?
|
53
|
+
|
54
|
+
--- SMB::Stat#dev
|
55
|
+
|
56
|
+
--- SMB::Stat#ino
|
57
|
+
|
58
|
+
--- SMB::Stat#mode
|
59
|
+
|
60
|
+
--- SMB::Stat#nlink
|
61
|
+
|
62
|
+
--- SMB::Stat#uid
|
63
|
+
|
64
|
+
--- SMB::Stat#gid
|
65
|
+
|
66
|
+
--- SMB::Stat#rdev
|
67
|
+
|
68
|
+
--- SMB::Stat#blksize
|
69
|
+
|
70
|
+
--- SMB::Stat#blocks
|
71
|
+
|
72
|
+
--- SMB::Stat#size
|
73
|
+
|
74
|
+
--- SMB::Stat#directory?
|
75
|
+
|
76
|
+
--- SMB::Stat#file?
|
77
|
+
|
78
|
+
--- SMB::Stat#regular?
|
79
|
+
|
80
|
+
--- SMB::Stat#symlink?
|
81
|
+
|
82
|
+
--- SMB::Stat#fifo?
|
83
|
+
|
51
84
|
== class SMB::File
|
52
85
|
--- SMB::File.new(String url, Integer flags, Integer mode)
|
53
86
|
|
data/lib/smb/version.rb
CHANGED
metadata
CHANGED
@@ -1,49 +1,41 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: smb
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 0
|
10
|
-
version: 0.5.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Geoff Youngs
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rubber-generate
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 61
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 0
|
31
|
-
- 17
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 0.0.17
|
33
22
|
type: :runtime
|
34
|
-
|
35
|
-
version_requirements:
|
36
|
-
|
37
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.0.17
|
30
|
+
description: ! 'smb
|
38
31
|
|
32
|
+
'
|
39
33
|
email: git@intersect-uk.co.uk
|
40
34
|
executables: []
|
41
|
-
|
42
|
-
extensions:
|
35
|
+
extensions:
|
43
36
|
- ext/smb/extconf.rb
|
44
37
|
extra_rdoc_files: []
|
45
|
-
|
46
|
-
files:
|
38
|
+
files:
|
47
39
|
- ext/smb/smb.c
|
48
40
|
- ext/smb/smb.cr
|
49
41
|
- ext/smb/smb.rd
|
@@ -55,36 +47,29 @@ files:
|
|
55
47
|
- ext/smb/extconf.rb
|
56
48
|
homepage: http://github.com/geoffyoungs/smb-ruby
|
57
49
|
licenses: []
|
58
|
-
|
59
50
|
post_install_message:
|
60
51
|
rdoc_options: []
|
61
|
-
|
62
|
-
require_paths:
|
52
|
+
require_paths:
|
63
53
|
- lib
|
64
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
55
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
70
|
-
segments:
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
segments:
|
71
61
|
- 0
|
72
|
-
|
73
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
hash: -3014513220531350043
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
64
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
version: "0"
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
82
69
|
requirements: []
|
83
|
-
|
84
70
|
rubyforge_project:
|
85
|
-
rubygems_version: 1.8.
|
71
|
+
rubygems_version: 1.8.25
|
86
72
|
signing_key:
|
87
73
|
specification_version: 3
|
88
74
|
summary: libsmbclient bindings for ruby
|
89
75
|
test_files: []
|
90
|
-
|