rfuse 1.0.5 → 1.1.0.RC0

Sign up to get free protection for your applications and to get access to all the features.
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