open (Fam::Connection)

    /*
     * Create a new connection to the FAM daemon.
     *
     * Aliases:
     *   Fam::Connection.open2
     *
     * Examples:
     *   # connect and tell FAM the application is named 'foo'
     *   fam = Fam::Connection.open 'foo'
     *
     *   # just connect
     *   fam = Fam::Connection.open
     *
     *   # connect and close automatically
     *   Fam::Connection.open('foo') {|fam| ... }
     *
     */
    static VALUE
    fam_conn_s_open(int argc, VALUE *argv, VALUE klass)
    {
      VALUE self = rb_class_new_instance(argc, argv, klass);

      if (rb_block_given_p()) {
        return rb_ensure(rb_yield, self, conn_close, self);
      }

      return self;
    }