diff options
author | Andrés M <andmarti1424@users.noreply.github.com> | 2017-02-12 14:18:30 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-12 14:18:30 -0300 |
commit | ee54b2ba021870ee9f3e4582fc45dbe943fe6e30 (patch) | |
tree | 2cd05712cc751b84c7ce5bc564ff3b202b006d90 | |
parent | fc4c39410d5db10e0af5f7698f66e54342f62053 (diff) | |
parent | 92fa68d2a711bdc51aaa4f203e603cb5d796fc6d (diff) |
Merge pull request #142 from melak/fix/134
Process $HOME/.scimrc after loading a file
-rw-r--r-- | src/file.c | 23 | ||||
-rw-r--r-- | src/file.h | 1 | ||||
-rw-r--r-- | src/main.c | 1 |
3 files changed, 15 insertions, 10 deletions
@@ -38,7 +38,6 @@ extern int yyparse(void); /* erase the database (tbl, etc.) */ void erasedb() { int r, c; - char * home; for (c = 0; c <= maxcol; c++) { fwidth[c] = DEFWIDTH; @@ -74,19 +73,23 @@ void erasedb() { optimize = 0; currow = curcol = 0; - // Load $HOME/.scimrc if present. - if ((home = getenv("HOME"))) { - strcpy(curfile, home); - strcat(curfile, "/.scimrc"); - if ((c = open(curfile, O_RDONLY)) > -1) { - close(c); - (void) readfile(curfile, 0); - } - } + loadrc(); *curfile = '\0'; } +void loadrc(void) { + char rcpath[PATHLEN]; + char * home; + + if ((home = getenv("HOME"))) { + memset(rcpath, 0, sizeof(rcpath)); + strncpy(rcpath, home, sizeof(rcpath) - (sizeof("/.scimrc") + 1)); + strcat(rcpath, "/.scimrc"); + (void) readfile(rcpath, 0); + } +} + // function that checks if a file exists. // returns 1 if so. returns 0 otherwise. int file_exists(const char * fname) { @@ -1,4 +1,5 @@ void erasedb(); +void loadrc(void); int modcheck(); int savefile(); int writefile(char *fname, int r0, int c0, int rn, int cn); @@ -372,6 +372,7 @@ void load_sc() { } wordfree(&p); EvalAll(); // we eval formulas + loadrc(); } return; } |