Skip to content

vweevers/fs-maybe-open

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published