Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'cat': function (tokens, pipes, exit) {
- var out = new view.bridge(pipes.viewOut);
- var chunkSize = 4096;
- // "cat <file> [file ...]" syntax.
- if (tokens.length < 2) {
- out.print('Usage: cat <file> [file] ...');
- return exit(false);
- }
- if (tokens.length > 2) {
- out.print('Multiple input files not supported yet.');
- return exit(false);
- }
- var errors = 0,
- track = whenDone(function () {
- exit(errors == 0);
- });
- for (i in tokens) if (i > 0) (function (file) {
- fs.stat(file, track(function (err, stats) {
- if (err) {
- errors++;
- out.print("No such file (" + file + ")");
- return;
- }
- fs.open(file, 'r', track(function (err, fd) {
- if (err) {
- errors++;
- out.print("Unable to open file (" + file + ")");
- return;
- }
- var position = 0, buffer = new Buffer(chunkSize);
- (function read() {
- fs.read(fd, buffer, 0, chunkSize, position, track(function (err, bytesRead) {
- if (err) {
- errors++;
- out.print("Error reading file (" + file + ")");
- return;
- }
- if (position == 0) {
- var headers = new meta.headers();
- headers.set({
- 'Content-Type': meta.sniff(file, buffer),
- 'Content-Length': stats.size,
- 'Content-Disposition': [
- [ 'attachment' ],
- [ 'filename', file ],
- ],
- });
- pipes.dataOut.write(headers.generate());
- }
- pipes.dataOut.write(buffer.slice(0, bytesRead));
- position += bytesRead;
- if (position < stats.size) {
- read();
- }
- }));
- })();
- }));
- }));
- })(tokens[i]);
- },
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement