summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2022-03-28 10:46:56 -0400
committerJakob Kaivo <jkk@ung.org>2022-03-28 10:46:56 -0400
commit9ab73dbe16237b6b2b1e8e214c10d879b843c726 (patch)
tree3733818ab47e3172a69469f3fe97510ed1c59bd9
parent6a32ada5270c5a948f939b7f14be17c3fba646f0 (diff)
make next and last local variables
-rw-r--r--menudriver.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/menudriver.c b/menudriver.c
index af47f54..10e1c26 100644
--- a/menudriver.c
+++ b/menudriver.c
@@ -41,13 +41,11 @@ int fastback = 0;
void callshell(char[]);
void clrscr(void);
void menudrive(const char *, const char *, char *);
-void pushlast(void);
-void poplast(void);
+void pushlast(char *);
+void poplast(char *);
void settings(const char *, const char *, int);
int subdir(void);
-char next[40] = "", last[40] = ".";
-
static void wait_for_return(void)
{
printf("[Hit return to continue]");
@@ -98,7 +96,6 @@ static void view_file(const char *viewer, const char *filename)
if (st.st_mode & S_IXUSR) {
#endif
snprintf(cmd, sizeof(cmd), "./%s", filename);
- //fastback = 0;
} else {
snprintf(cmd, sizeof(cmd), "%s %s", viewer, filename);
}
@@ -136,19 +133,19 @@ int main(int argc, char *argv[])
}
/* checks if last is a number (and if so leaves value in val) */
-int lastval(void)
+int lastval(char *last)
{
/* special case, have just entered subdir */
int val;
if (strcmp(last, ".") == 0 && subdir()) {
- poplast();
+ poplast(last);
if (sscanf(last, "%d", &val) == 1) {
chdir("..");
return (1);
}
- pushlast();
+ pushlast(last);
return 0;
}
@@ -157,6 +154,8 @@ int lastval(void)
void menudrive(const char *menuviewer, const char *viewer, char *dir)
{
+ char next[40] = "", last[40] = ".";
+
char *np;
int c;
int bad = 0;
@@ -210,7 +209,7 @@ void menudrive(const char *menuviewer, const char *viewer, char *dir)
if (next[0] == '\0') {
chdir("..");
- poplast();
+ poplast(last);
continue;
}
@@ -218,11 +217,11 @@ void menudrive(const char *menuviewer, const char *viewer, char *dir)
strcpy(next, last); /* repeat last option */
}
- if (strcmp(next, "+") == 0 && lastval()) {
+ if (strcmp(next, "+") == 0 && lastval(last)) {
(void)sprintf(next, "%d", atoi(last) + 1);
}
- if (strcmp(next, "-") == 0 && lastval()) {
+ if (strcmp(next, "-") == 0 && lastval(last)) {
(void)sprintf(next, "%d", atoi(last) - 1);
}
@@ -244,7 +243,7 @@ void menudrive(const char *menuviewer, const char *viewer, char *dir)
chdir(hold);
} else {
strcpy(last, next);
- pushlast();
+ pushlast(last);
next[0] = '\0';
}
@@ -394,7 +393,7 @@ int subdir(void)
return (lastp > lastvec + 1);
}
-void pushlast(void)
+void pushlast(char *last)
{
int n = strlen(last);
if (last[0] == '.') {
@@ -402,7 +401,7 @@ void pushlast(void)
if (last[1] == '\0') {
return;
} else if (last[1] == '.' && last[2] == '\0') {
- poplast();
+ poplast(last);
return;
}
}
@@ -417,7 +416,7 @@ void pushlast(void)
strcpy(last, ".");
}
-void poplast(void)
+void poplast(char *last)
{
strcpy(lastp, last); /* just in case we come back immediately */
lastp--;