diff options
| author | Tobias Klauser <tklauser@xenon.tklauser.home> | 2006-04-29 16:51:21 +0200 | 
|---|---|---|
| committer | Tobias Klauser <tklauser@xenon.tklauser.home> | 2006-04-29 16:51:21 +0200 | 
| commit | 1262ef513c8e4903934551a29a811f8cac97a1c1 (patch) | |
| tree | 9f87b72770af4cc1564b655f09eee8d29d868af5 | |
| parent | 09dfe0a5f274529f0bf4b5fa0c769eaf34dd490d (diff) | |
* Implemented -v option
* Made functions static
| -rw-r--r-- | simpletail.c | 23 | 
1 files changed, 20 insertions, 3 deletions
| diff --git a/simpletail.c b/simpletail.c index b71339f..5201406 100644 --- a/simpletail.c +++ b/simpletail.c @@ -38,13 +38,24 @@  #define BUFFER_SIZE 4096  #define DEFAULT_N_LINES 10 -void usage(void) +/* Print header with filename before tailing the file? */ +static short verbose = 0; + +static void usage(void)  {  	fprintf(stderr, "usage: simpletail [-f] [-n <nr-lines>] <file>\n");  	exit(EXIT_FAILURE);  } -off_t lines(int fd, int file_size, unsigned int n_lines) +static void write_header(const char *filename) +{ +	static unsigned short first_file = 1; + +	fprintf (stdout, "%s==> %s <==\n", (first_file ? "" : "\n"), filename); +	first_file = 0; +} + +static off_t lines(int fd, int file_size, unsigned int n_lines)  {  	int i;  	char buf[BUFFER_SIZE]; @@ -89,7 +100,7 @@ off_t lines(int fd, int file_size, unsigned int n_lines)  	return offset;  } -int watch_file(const char *filename, off_t offset) +static int watch_file(const char *filename, off_t offset)  {  	int ifd, watch;  	struct inotify_event *inev; @@ -183,6 +194,9 @@ int main(int argc, char **argv)  		case 'n':  			n_lines = strtol(argv[++i], NULL, 0);  			break; +		case 'v': +			verbose = 1; +			break;                  default:  			usage();  			break; @@ -205,6 +219,9 @@ int main(int argc, char **argv)  	offset = lines(fd, finfo.st_size, n_lines);  	dprintf("  offset: %lu.\n", offset); +	if (verbose) +		write_header(filename); +  	lseek(fd, offset, SEEK_SET);  	while (read(fd, &buf, BUFFER_SIZE) != 0) {  		write(STDOUT_FILENO, buf, finfo.st_size - offset); | 
