📄 catf.c
字号:
/* * Copy the files given as arguments to the standard output. The file * name "-" refers to the standard input. * * Copyright (C) 1989 by Kenneth Almquist. All rights reserved. * This file is part of ash, which is distributed under the terms specified * by the Ash General Public License. See the file named LICENSE. */#define main catfcmd#include "bltin.h"#include "../error.h"#include <sys/param.h>#include <fcntl.h>#ifdef SBUFSIZE#define BUFSIZE() SBUFSIZE#else#ifdef MAXBSIZE#define BUFSIZE() MAXBSIZE#else#define BUFSIZE() BSIZE#endif#endifmain(argc, argv) char **argv; { char *filename; char *buf = stalloc(BUFSIZE()); int fd; int i;#ifdef SHELL volatile int input; struct jmploc jmploc; struct jmploc *volatile savehandler;#endif INITARGS(argv);#ifdef SHELL input = -1; if (setjmp(jmploc.loc)) { close(input); handler = savehandler; longjmp(handler, 1); } savehandler = handler; handler = &jmploc;#endif while ((filename = *++argv) != NULL) { if (filename[0] == '-' && filename[1] == '\0') { fd = 0; } else {#ifdef SHELL INTOFF; if ((fd = open(filename, O_RDONLY)) < 0) error("Can't open %s", filename); input = fd; INTON;#else if ((fd = open(filename, O_RDONLY)) < 0) { fprintf(stderr, "catf: Can't open %s\n", filename); exit(2); }#endif } while ((i = read(fd, buf, BUFSIZE())) > 0) {#ifdef SHELL if (out1 == &memout) { register char *p; for (p = buf ; --i >= 0 ; p++) { outc(*p, &memout); } } else { write(1, buf, i); }#else write(1, buf, i);#endif } if (fd != 0) close(fd); }#ifdef SHELL handler = savehandler;#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -