Xinqi Bao's Git
projects
/
dmenu.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
cache option in config.mk
[dmenu.git]
/
dmenu_path.c
diff --git
a/dmenu_path.c
b/dmenu_path.c
index
1575f1d
..
407477a
100644
(file)
--- a/
dmenu_path.c
+++ b/
dmenu_path.c
@@
-1,32
+1,30
@@
/* See LICENSE file for copyright and license details. */
#include <dirent.h>
/* See LICENSE file for copyright and license details. */
#include <dirent.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
-#define CACHE ".dmenu_cache"
-
-static int qstrcmp(const void *a, const void *b);
static void die(const char *s);
static void die(const char *s);
+static int qstrcmp(const void *a, const void *b);
static void scan(void);
static int uptodate(void);
static char **items = NULL;
static void scan(void);
static int uptodate(void);
static char **items = NULL;
-static const char *Home, *Path;
-static size_t count = 0;
+static const char *home, *path;
int
main(void) {
int
main(void) {
- if(!(
H
ome = getenv("HOME")))
+ if(!(
h
ome = getenv("HOME")))
die("no $HOME");
die("no $HOME");
- if(!(
P
ath = getenv("PATH")))
+ if(!(
p
ath = getenv("PATH")))
die("no $PATH");
die("no $PATH");
- if(chdir(
H
ome) < 0)
+ if(chdir(
h
ome) < 0)
die("chdir failed");
if(uptodate()) {
die("chdir failed");
if(uptodate()) {
- execl
p("
cat", "cat", CACHE, NULL);
+ execl
("/bin/
cat", "cat", CACHE, NULL);
die("exec failed");
}
scan();
die("exec failed");
}
scan();
@@
-47,15
+45,16
@@
qstrcmp(const void *a, const void *b) {
void
scan(void) {
char buf[PATH_MAX];
void
scan(void) {
char buf[PATH_MAX];
- char *dir, *p
ath
;
- size_t i;
+ char *dir, *p;
+ size_t i
, count
;
struct dirent *ent;
DIR *dp;
FILE *cache;
struct dirent *ent;
DIR *dp;
FILE *cache;
- if(!(path = strdup(Path)))
+ count = 0;
+ if(!(p = strdup(path)))
die("strdup failed");
die("strdup failed");
- for(dir = strtok(p
ath
, ":"); dir; dir = strtok(NULL, ":")) {
+ for(dir = strtok(p, ":"); dir; dir = strtok(NULL, ":")) {
if(!(dp = opendir(dir)))
continue;
while((ent = readdir(dp))) {
if(!(dp = opendir(dir)))
continue;
while((ent = readdir(dp))) {
@@
-79,23
+78,23
@@
scan(void) {
fprintf(stdout, "%s\n", items[i]);
}
fclose(cache);
fprintf(stdout, "%s\n", items[i]);
}
fclose(cache);
- free(p
ath
);
+ free(p);
}
int
uptodate(void) {
}
int
uptodate(void) {
- char *dir, *p
ath
;
+ char *dir, *p;
time_t mtime;
struct stat st;
if(stat(CACHE, &st) < 0)
return 0;
mtime = st.st_mtime;
time_t mtime;
struct stat st;
if(stat(CACHE, &st) < 0)
return 0;
mtime = st.st_mtime;
- if(!(p
ath = strdup(P
ath)))
+ if(!(p
= strdup(p
ath)))
die("strdup failed");
die("strdup failed");
- for(dir = strtok(p
ath
, ":"); dir; dir = strtok(NULL, ":"))
+ for(dir = strtok(p, ":"); dir; dir = strtok(NULL, ":"))
if(!stat(dir, &st) && st.st_mtime > mtime)
return 0;
if(!stat(dir, &st) && st.st_mtime > mtime)
return 0;
- free(p
ath
);
+ free(p);
return 1;
}
return 1;
}