diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2017-12-04 19:52:35 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2017-12-04 19:52:35 +0530 |
commit | 6ccb8ee94ba8eaf14d416d35eeeabd3871b03a0d (patch) | |
tree | b7e5de26ce0bd75f61a704a41e403c9f23ece8f9 | |
parent | 092cdf3f82335d8a0444a48a98f7ad70c103fd85 (diff) | |
download | nnn-6ccb8ee94ba8eaf14d416d35eeeabd3871b03a0d.tar.gz |
Minor optimization, refactor
-rw-r--r-- | nnn.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -188,11 +188,11 @@ typedef unsigned char uchar; /* Directory entry */ typedef struct entry { - char name[NAME_MAX]; - mode_t mode; + char name[NAME_MAX + 1]; time_t t; off_t size; blkcnt_t blocks; /* number of 512B blocks allocated */ + mode_t mode; } *pEntry; /* Bookmark */ @@ -348,7 +348,7 @@ xstrlen(const char *s) static size_t xstrlcpy(char *dest, const char *src, size_t n) { - static size_t len, blocks; + static size_t len, blocks, lsize = sizeof(ulong); static const uint _WSHIFT = (sizeof(ulong) == 8) ? 3 : 2; if (!src || !dest) @@ -361,8 +361,11 @@ xstrlcpy(char *dest, const char *src, size_t n) /* Save total number of bytes to copy in len */ len = n; - blocks = n >> _WSHIFT; - n -= (blocks << _WSHIFT); + if (n >= lsize) { + blocks = n >> _WSHIFT; + n -= (blocks << _WSHIFT); + } else + blocks = 0; if (blocks) { static ulong *s, *d; @@ -872,12 +875,11 @@ static void fill(struct entry **dents, int (*filter)(regex_t *, char *), regex_t *re) { static int count; + static struct entry _dent, *dentp1, *dentp2; for (count = 0; count < ndents; ++count) { if (filter(re, (*dents)[count].name) == 0) { if (count != --ndents) { - static struct entry _dent, *dentp1, *dentp2; - dentp1 = &(*dents)[count]; dentp2 = &(*dents)[ndents]; |