summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrés M <andmarti1424@users.noreply.github.com>2017-02-12 14:18:30 -0300
committerGitHub <noreply@github.com>2017-02-12 14:18:30 -0300
commitee54b2ba021870ee9f3e4582fc45dbe943fe6e30 (patch)
tree2cd05712cc751b84c7ce5bc564ff3b202b006d90
parentfc4c39410d5db10e0af5f7698f66e54342f62053 (diff)
parent92fa68d2a711bdc51aaa4f203e603cb5d796fc6d (diff)
Merge pull request #142 from melak/fix/134
Process $HOME/.scimrc after loading a file
-rw-r--r--src/file.c23
-rw-r--r--src/file.h1
-rw-r--r--src/main.c1
3 files changed, 15 insertions, 10 deletions
diff --git a/src/file.c b/src/file.c
index 7e80177..90b4fdc 100644
--- a/src/file.c
+++ b/src/file.c
@@ -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) {
diff --git a/src/file.h b/src/file.h
index fb5f2bd..eeee514 100644
--- a/src/file.h
+++ b/src/file.h
@@ -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);
diff --git a/src/main.c b/src/main.c
index 21922e7..6fa62e5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -372,6 +372,7 @@ void load_sc() {
}
wordfree(&p);
EvalAll(); // we eval formulas
+ loadrc();
}
return;
}