fs-maybe-open

Open a file unless already an fd

Usage no npm install needed!

<script type="module">
  import fsMaybeOpen from 'https://cdn.skypack.dev/fs-maybe-open';
</script>

README

fs-maybe-open

Open a file unless it's already a file descriptor.

npm status node Travis build status AppVeyor build status Dependency status

usage

const maybeOpen = require('fs-maybe-open')
    , fs = require('fs')

function readExactly(fdOrFile, pos, length, done) {
  maybeOpen(fdOrFile, 'r', function (err, fd, maybeClose) {
    if (err) return done(err)

    fs.read(fd, Buffer(length), 0, length, pos, function (err, bytesRead, buf) {
      if (err) return maybeClose(done, err)

      if (bytesRead !== length) {
        return maybeClose(done, new Error('End of file'))
      }

      maybeClose(done, null, buf)
    })
  })
}

The maybeOpen function has the same signature as fs.open(path, flags[, mode], callback). Except:

  • If path is a file descriptor, opening is a noop
  • The open callback also receives a maybeClose(callback, err, ...args) function, which calls fs.close for you if path was a filename. An error from fs.close (if any) will be combined with your error (if any).

install

With npm do:

npm install fs-maybe-open

license

MIT © Vincent Weevers