Путь: Toys/POSIX, команды версии: Ver.4 Ver.9 head Комментарии в файле head.c :
Исходный текст в файле head.c #define FOR_head #include "toys.h" GLOBALS( long c, n; int file_no; ) static void do_head(int fd, char *name) { long i, len, lines=TT.n, bytes=TT.c; if ((toys.optc > 1 && !FLAG(q)) || FLAG(v)) { // Print an extra newline for all but the first file if (TT.file_no) xprintf("\n"); xprintf("==> %s <==\n", name); } while (FLAG(c) ? bytes : lines) { len = read(fd, toybuf, sizeof(toybuf)); if (len<0) perror_msg_raw(name); if (len<1) break; if (bytes) { i = bytes >= len ? len : bytes; bytes -= i; } else for(i=0; i<len;) if (toybuf[i++] == '\n' && !--lines) break; xwrite(1, toybuf, i); } TT.file_no++; } void head_main(void) { char *arg = *toys.optargs; // handle old "-42" style arguments if (arg && *arg == '-' && arg[1]) { TT.n = atolx(arg+1); toys.optc--; } else arg = 0; loopfiles(toys.optargs+!!arg, do_head); } |