rfuse 1.0.5 → 1.1.0.RC0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4f29302292efd2fca5a366cb8c385b9d7911398b
4
+ data.tar.gz: 6e83c7bfafa3a0d770be17bfb1ef45568bad0c66
5
+ SHA512:
6
+ metadata.gz: c311a008c40bb1ec20b2a929b348e95cccca0181f93bd3ce93f19e29f9e0ea62907feb30d763a0695f42409f9efb2655a3497b20204f867ccbd32384685ebbf6
7
+ data.tar.gz: 608b039f1efdadf041935b208c79ad10266cb0a33adc7bdf896cc6ed1da758dafcfaab969f9e1027ba7bfc3d23ee2cc52133c8f64c866ce78a2301d1d6ba2ba5
data/.yardopts CHANGED
@@ -1,2 +1,4 @@
1
+ --no-private
2
+ --markup=markdown
1
3
  -
2
4
  CHANGES.md
data/CHANGES.md CHANGED
@@ -1,3 +1,15 @@
1
+ 1.1.0 - 2014/MM/DD
2
+ ------------------
3
+
4
+ * {RFuse::Fuse#trap_signals} a clean way of handling signals (with the self-pipe previously used for a graceful exit)
5
+ * Default signal handlers for "INT","TERM" (exit fuse), "USR1" (toggle FuseDelegator debugging)
6
+ * Introduce {RFuse.main} as Ruby equivalent of fuse_main() convenience method for starting filesystems
7
+
8
+ 1.0.5 - 2014/04/16
9
+ ------------------
10
+
11
+ Bugfixes
12
+
1
13
  1.0.4 - 2013/12/19
2
14
  ------------------
3
15
 
data/README.md CHANGED
@@ -20,25 +20,23 @@ Dependencies
20
20
  Installation
21
21
  ---------------
22
22
 
23
- $ gem install rfuse
23
+ gem install rfuse
24
24
 
25
25
  Creating a filesystem
26
26
  ---------------------------
27
27
 
28
- Extend and implement the abstract methods of {RFuse::Fuse} (See also {RFuse::FuseDelegator})
28
+ Create your filesystem as a class implementing the abstract FUSE methods from {RFuse::Fuse} as necessary.
29
+
30
+ Run it with {RFuse.main}
29
31
 
30
32
  For a sample filesystem see sample/test-ruby.rb
31
33
 
32
34
  To run the example:
33
35
 
34
- $ mkdir /tmp/fuse
35
- $ ruby sample/test-ruby.rb /tmp/fuse
36
-
37
- ..and there should be an empty in-memory filesystem mounted at /tmp/fuse
38
-
39
- $ fusermount -u /tmp/fuse
36
+ mkdir /tmp/fuse
37
+ ruby sample/test-ruby.rb /tmp/fuse
40
38
 
41
- ...should stop the example filesystem program.
39
+ there should be an empty in-memory filesystem mounted at `/tmp/fuse`
42
40
 
43
41
  HISTORY
44
42
  ======
data/ext/rfuse/context.c CHANGED
@@ -10,7 +10,7 @@ VALUE wrap_context (struct fuse_context *fctx) {
10
10
  }
11
11
 
12
12
  /*
13
- @api private
13
+ @private
14
14
  */
15
15
  VALUE context_initialize(VALUE self){
16
16
  return self;
@@ -25,7 +25,7 @@ VALUE context_new(VALUE class){
25
25
  }
26
26
 
27
27
  /*
28
- @return [Integer] User id of the caller
28
+ @return [Integer] User id of the caller
29
29
  */
30
30
  VALUE context_uid(VALUE self){
31
31
  struct fuse_context *ctx;
@@ -51,6 +51,14 @@ VALUE context_pid(VALUE self){
51
51
  return INT2FIX(ctx->pid);
52
52
  }
53
53
 
54
+ /*
55
+ * @return [Fuse] the fuse object
56
+ */
57
+ VALUE context_fuse(VALUE self) {
58
+ struct fuse_context *ctx;
59
+ Data_Get_Struct(self,struct fuse_context,ctx);
60
+ return (VALUE) ctx->private_data;
61
+ }
54
62
  /*
55
63
  Document-class: RFuse::Context
56
64
  Context object passed to every fuse operation
@@ -58,6 +66,8 @@ VALUE context_pid(VALUE self){
58
66
  void context_init(VALUE module) {
59
67
  #if 0
60
68
  module = rb_define_module("RFuse");
69
+
70
+
61
71
  #endif
62
72
 
63
73
  VALUE cContext=rb_define_class_under(module,"Context",rb_cObject);
@@ -66,4 +76,5 @@ void context_init(VALUE module) {
66
76
  rb_define_method(cContext,"uid",context_uid,0);
67
77
  rb_define_method(cContext,"gid",context_gid,0);
68
78
  rb_define_method(cContext,"pid",context_pid,0);
79
+ rb_define_method(cContext,"fuse",context_fuse,0);
69
80
  }
@@ -56,6 +56,9 @@ VALUE release_file_info(struct fuse_context *ctx, struct fuse_file_info *ffi)
56
56
 
57
57
  }
58
58
 
59
+ /*
60
+ * @private
61
+ */
59
62
  VALUE file_info_initialize(VALUE self){
60
63
  return self;
61
64
  }
@@ -135,7 +138,7 @@ void file_info_init(VALUE module) {
135
138
  rb_define_method(cFileInfo,"nonseekable=",file_info_nonseekable_assign,1);
136
139
 
137
140
  /*
138
- Filehandle - can be any ruby object
141
+ @return [Object] user specified filehandle object. See {Fuse#open}
139
142
  */
140
143
  rb_define_attr(cFileInfo,"fh",1,1);
141
144
  }
data/ext/rfuse/filler.c CHANGED
@@ -7,7 +7,7 @@ VALUE rfiller_initialize(VALUE self){
7
7
  }
8
8
 
9
9
  /*
10
- * @api private Never called
10
+ * @private Never called
11
11
  */
12
12
  VALUE rfiller_new(VALUE class){
13
13
  VALUE self;
data/ext/rfuse/rfuse.c CHANGED
@@ -1778,18 +1778,32 @@ VALUE rf_process(VALUE self)
1778
1778
  * @param [Array<String>] options fuse arguments (-h to see a list)
1779
1779
  */
1780
1780
  static VALUE rf_initialize(
1781
- VALUE self,
1782
- VALUE mountpoint_obj,
1783
- VALUE opts)
1781
+ int argc,
1782
+ VALUE* argv,
1783
+ VALUE self)
1784
1784
  {
1785
1785
 
1786
+ VALUE opts;
1787
+ VALUE first_opt;
1788
+ VALUE mountpoint_arg;
1786
1789
  VALUE mountpoint;
1787
1790
  struct intern_fuse *inf;
1788
1791
  int init_result;
1789
1792
  struct fuse_args *args;
1790
1793
 
1794
+ rb_scan_args(argc, argv, "1*",&mountpoint_arg, &opts);
1795
+
1796
+ // Allow pre 1.0.6 style Fuse which forced options to be passed as an array
1797
+ if (RARRAY_LEN(opts) == 1) {
1798
+ first_opt = rb_ary_entry(opts,0);
1799
+ if (TYPE(first_opt) == T_ARRAY) {
1800
+ opts = first_opt;
1801
+ }
1802
+ }
1791
1803
  //Allow things like Pathname to be sent as a mountpoint
1792
- mountpoint = rb_obj_as_string(mountpoint_obj);
1804
+ mountpoint = rb_obj_as_string(mountpoint_arg);
1805
+
1806
+ //Is this redundant if scan_args has populted opts?
1793
1807
  Check_Type(opts, T_ARRAY);
1794
1808
 
1795
1809
  Data_Get_Struct(self,struct intern_fuse,inf);
@@ -1930,12 +1944,17 @@ void rfuse_init(VALUE module)
1930
1944
  VALUE cFuse;
1931
1945
 
1932
1946
  mRFuse = module;
1947
+
1948
+ // The underlying FUSE library major version
1949
+ rb_define_const(mRFuse,"FUSE_MAJOR_VERSION",INT2FIX(FUSE_MAJOR_VERSION));
1950
+ // The underlyfing FUSE library minor versoin
1951
+ rb_define_const(mRFuse,"FUSE_MINOR_VERSION",INT2FIX(FUSE_MINOR_VERSION));
1933
1952
 
1934
1953
  cFuse = rb_define_class_under(mRFuse,"Fuse",rb_cObject);
1935
1954
 
1936
1955
  rb_define_alloc_func(cFuse,rf_new);
1937
1956
 
1938
- rb_define_method(cFuse,"initialize",rf_initialize,2);
1957
+ rb_define_method(cFuse,"initialize",rf_initialize,-1);
1939
1958
  rb_define_method(cFuse,"mounted?",rf_mounted,0);
1940
1959
  rb_define_method(cFuse,"invalidate",rf_invalidate,1);
1941
1960
  rb_define_method(cFuse,"unmount",rf_unmount,0);
@@ -1978,7 +1997,6 @@ void rfuse_init(VALUE module)
1978
1997
  rb_define_method(cFuse,"releasedir",unsafe_releasedir,0);
1979
1998
  rb_define_method(cFuse,"fsyncdir",unsafe_fsyncdir,0);
1980
1999
  rb_define_method(cFuse,"init",unsafe_init,0);
1981
- rb_define_method(cFuse,"destroy",unsafe_destroy,0);
1982
2000
  rb_define_method(cFuse,"access",unsafe_access,0);
1983
2001
  rb_define_method(cFuse,"create",unsafe_create,0);
1984
2002
  rb_define_method(cFuse,"ftruncate",unsafe_ftruncate,0);
data/lib/rfuse/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RFuse
2
- VERSION = "1.0.5"
2
+ VERSION = "1.1.0.RC0"
3
3
  end