From 34ba5348c8f9df466c44ef00f717e714fd8019ff Mon Sep 17 00:00:00 2001 From: Yorhel <git@yorhel.nl> Date: Thu, 16 Apr 2009 18:26:39 +0200 Subject: [PATCH] Made stcalc static within calc.c and abstracted access to it with calc_init() This actually makes the struct itself obsolete, as all information is now only useful within calc.c itself and other files don't have to do anything with it. --- src/browser.c | 5 +---- src/calc.c | 33 ++++++++++++++++++++++++--------- src/calc.h | 16 +--------------- src/main.c | 7 +++---- 4 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/browser.c b/src/browser.c index e9ac8ad..5907f08 100644 --- a/src/browser.c +++ b/src/browser.c @@ -407,10 +407,7 @@ int browse_key(int ch) { /* refresh */ case 'r': hideinfo; - stcalc.sterr = ST_BROWSE; - stcalc.orig = stbrowse.cur->parent; - strcpy(stcalc.cur, getpath(stbrowse.cur, tmp)); - pstate = ST_CALC; + calc_init(getpath(stbrowse.cur, tmp), stbrowse.cur->parent); break; /* and other stuff */ diff --git a/src/calc.c b/src/calc.c index 5aa4063..a8d929a 100644 --- a/src/calc.c +++ b/src/calc.c @@ -39,8 +39,18 @@ #include <sys/time.h> #include <dirent.h> -struct state_calc stcalc; +struct { + char err; /* 1/0, error or not */ + char cur[PATH_MAX]; /* current dir/item */ + char lasterr[PATH_MAX]; /* last unreadable dir/item */ + char errmsg[128]; /* error message, when err=1 */ + struct dir *parent; /* parent directory for the calculation */ + struct dir *orig; /* original directory, when recalculating */ + dev_t curdev; /* current device we're calculating on */ + suseconds_t lastupdate; /* time of the last screen update */ + int anpos; /* position of the animation string */ +} stcalc; /* My own implementation of realpath() @@ -288,7 +298,7 @@ void calc_draw_progress() { char ani[15]; int i; - nccreate(10, 60, stcalc.sterr == ST_QUIT ? "Calculating..." : "Recalculating..."); + nccreate(10, 60, stcalc.orig ? "Calculating..." : "Recalculating..."); ncprint(2, 2, "Total items: %-8d size: %s", stcalc.parent->items, formatsize(stcalc.parent->size, sflags & SF_SI)); @@ -368,12 +378,6 @@ void calc_process() { struct stat fs; struct dir *t; - /* init/reset global vars */ - stcalc.err = 0; - stcalc.lastupdate = 999; - stcalc.lasterr[0] = 0; - stcalc.anpos = 0; - /* check root directory */ if(rpath(stcalc.cur, tmp) == NULL || lstat(tmp, &fs) != 0 || !S_ISDIR(fs.st_mode)) { stcalc.err = 1; @@ -421,7 +425,18 @@ void calc_process() { fail: while(stcalc.err && !input_handle(0)) ; - pstate = stcalc.sterr; + pstate = stcalc.orig ? ST_BROWSE : ST_QUIT; return; } + +void calc_init(char *dir, struct dir *orig) { + stcalc.err = 0; + stcalc.lastupdate = 999; + stcalc.lasterr[0] = 0; + stcalc.anpos = 0; + stcalc.orig = orig; + strcpy(stcalc.cur, dir); + pstate = ST_CALC; +} + diff --git a/src/calc.h b/src/calc.h index fa8f0f0..fc28daf 100644 --- a/src/calc.h +++ b/src/calc.h @@ -28,24 +28,10 @@ #include "ncdu.h" -struct state_calc { - char err; /* 1/0, error or not */ - char cur[PATH_MAX]; /* current dir/item */ - char lasterr[PATH_MAX]; /* last unreadable dir/item */ - char errmsg[128]; /* error message, when err=1 */ - struct dir *parent; /* parent directory for the calculation */ - struct dir *orig; /* original directory, when recalculating */ - dev_t curdev; /* current device we're calculating on */ - suseconds_t lastupdate; /* time of the last screen update */ - int anpos; /* position of the animation string */ - int sterr; /* state to go to on error (ST_BROWSE/ST_QUIT) */ -}; -extern struct state_calc stcalc; - - void calc_process(void); int calc_key(int); int calc_draw(void); +void calc_init(char *, struct dir *); #endif diff --git a/src/main.c b/src/main.c index f40dffe..dd6eb99 100644 --- a/src/main.c +++ b/src/main.c @@ -137,11 +137,10 @@ void argv_parse(int argc, char **argv, char *dir) { /* main program */ int main(int argc, char **argv) { - argv_parse(argc, argv, stcalc.cur); + char dir[PATH_MAX]; + argv_parse(argc, argv, dir); - pstate = ST_CALC; - stcalc.sterr = ST_QUIT; - stcalc.orig = NULL; + calc_init(dir, NULL); stbrowse.flags = BF_SIZE | BF_DESC; stbrowse.graph = 0; -- GitLab