diff options
author | Yorhel <git@yorhel.nl> | 2009-05-05 19:25:52 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-05-05 19:25:52 +0200 |
commit | fd984e754c4afb18447afa313aaa3c5699471f30 (patch) | |
tree | 0b08b94491cce67459f1aa78edccee4548711927 | |
parent | 757bdff7ed3dc79b079f76011c38cc476ef6eb00 (diff) |
Added hard link indicator in browser and help window
-rw-r--r-- | src/browser.c | 1 | ||||
-rw-r--r-- | src/calc.c | 6 | ||||
-rw-r--r-- | src/global.h | 3 | ||||
-rw-r--r-- | src/help.c | 6 |
4 files changed, 10 insertions, 6 deletions
diff --git a/src/browser.c b/src/browser.c index 0ce02b7..3cb354a 100644 --- a/src/browser.c +++ b/src/browser.c @@ -176,6 +176,7 @@ void browse_draw_item(struct dir *n, int row, off_t max, int ispar) { n->flags & FF_ERR ? '!' : n->flags & FF_SERR ? '.' : n->flags & FF_OTHFS ? '>' : + n->flags & FF_HLNK ? 'H' : !(n->flags & FF_FILE || n->flags & FF_DIR) ? '@' : n->flags & FF_DIR @@ -143,9 +143,9 @@ int calc_item(struct dir *par, char *name) { for(i=0; i<linkst; i++) if(links[i].dev == fs.st_dev && links[i].ino == fs.st_ino) break; - /* found in the list, set size = 0 */ + /* found in the list, set link flag (so the size won't get counted) */ if(i != linkst) - fs.st_blocks = fs.st_size = 0; + d->flags |= FF_HLNK; /* not found, add to the list */ else { if(++linkst > linksl) { @@ -162,7 +162,7 @@ int calc_item(struct dir *par, char *name) { } /* count the size */ - if(!(d->flags & FF_EXL || d->flags & FF_OTHFS)) { + if(!(d->flags & FF_EXL || d->flags & FF_OTHFS || d->flags & FF_HLNK)) { d->size = fs.st_blocks * S_BLKSIZE; d->asize = fs.st_size; for(t=d->parent; t!=NULL; t=t->parent) { diff --git a/src/global.h b/src/global.h index ebf7fd7..dfa7ff6 100644 --- a/src/global.h +++ b/src/global.h @@ -37,7 +37,8 @@ #define FF_OTHFS 0x08 /* excluded because it was an other filesystem */ #define FF_EXL 0x10 /* excluded using exlude patterns */ #define FF_SERR 0x20 /* error in subdirectory */ -#define FF_BSEL 0x40 /* selected */ +#define FF_HLNK 0x40 /* hard link (same file already encountered before) */ +#define FF_BSEL 0x80 /* selected */ /* Program states */ #define ST_CALC 0 @@ -95,14 +95,16 @@ void help_draw() { ncaddch( 7, 4, '<'); ncaddch( 8, 4, '>'); ncaddch( 9, 4, '@'); - ncaddch(10, 4, 'e'); + ncaddch(10, 4, 'H'); + ncaddch(11, 4, 'e'); attroff(A_BOLD); ncaddstr( 5, 7, "An error occured while reading this directory"); ncaddstr( 6, 7, "An error occured while reading a subdirectory"); ncaddstr( 7, 7, "File or directory is excluded from the statistics"); ncaddstr( 8, 7, "Directory was on an other filesystem"); ncaddstr( 9, 7, "This is not a file nor a dir (symlink, socket, ...)"); - ncaddstr(10, 7, "Empty directory"); + ncaddstr(10, 7, "Same file was already counted (hard link)"); + ncaddstr(11, 7, "Empty directory"); break; case 3: /* Indeed, too much spare time */ |