X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Ftailhead.c;h=f0488cbc184f9de878b383b35017a184a09248d6;hb=7a8c1e45c8d53a3b84a712c09c1fbdf9eaaa3e5a;hp=c9eff2a7b1e4fb784ced909c2649b9c0f71c14e2;hpb=63079a2075abfe7d5ee22d7b28313fdc10ce2d1b;p=monky diff --git a/src/tailhead.c b/src/tailhead.c index c9eff2a..f0488cb 100644 --- a/src/tailhead.c +++ b/src/tailhead.c @@ -10,7 +10,7 @@ * Please see COPYING for details * * Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen - * Copyright (c) 2005-2009 Brenden Matthews, Philip Kovacs, et. al. + * Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al. * (see AUTHORS) * All rights reserved. * @@ -33,6 +33,7 @@ #include "text_object.h" #include "logging.h" #include +#include #include #include #include @@ -178,3 +179,60 @@ void print_tailhead(const char* type, struct text_object *obj, char *p, int p_ma } return; } + +/* FIXME: use something more general (see also tail.c, head.c */ +#define BUFSZ 0x1000 + +void print_lines(struct text_object *obj, char *p, int p_max_size) +{ + static int rep = 0; + FILE *fp = open_file(obj->data.s, &rep); + char buf[BUFSZ]; + int j, lines; + + if (!fp) { + snprintf(p, p_max_size, "File Unreadable"); + return; + } + + lines = 0; + while(fgets(buf, BUFSZ, fp) != NULL){ + for(j = 0; buf[j] != 0; j++) { + if(buf[j] == '\n') { + lines++; + } + } + } + snprintf(p, p_max_size, "%d", lines); + fclose(fp); +} + +void print_words(struct text_object *obj, char *p, int p_max_size) +{ + static int rep = 0; + FILE *fp = open_file(obj->data.s, &rep); + char buf[BUFSZ]; + int j, words; + char inword = 0; + + if(!fp) { + snprintf(p, p_max_size, "File Unreadable"); + return; + } + + words = 0; + while(fgets(buf, BUFSZ, fp) != NULL){ + for(j = 0; buf[j] != 0; j++) { + if(!isspace(buf[j])) { + if(!inword) { + words++; + inword = 1; + } + } else { + inword = 0; + } + } + } + snprintf(p, p_max_size, "%d", words); + fclose(fp); +}