summaryrefslogtreecommitdiff
path: root/src/shared/stream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/stream.cpp')
-rw-r--r--src/shared/stream.cpp75
1 files changed, 2 insertions, 73 deletions
diff --git a/src/shared/stream.cpp b/src/shared/stream.cpp
index 1878801..3a5c6e2 100644
--- a/src/shared/stream.cpp
+++ b/src/shared/stream.cpp
@@ -232,7 +232,6 @@ done:
#include <sys/types.h>
#include <dirent.h>
-string homedir = "";
struct packagedir {
char *dir, *filter;
size_t dirlen, filterlen;
@@ -260,7 +259,6 @@ char *makerelpath(const char *dir, const char *file, const char *prefix, const c
return tmp;
}
-
char *path(char *s) {
for(char *curpart = s;;) {
char *endpart = strchr(curpart, '&');
@@ -330,75 +328,8 @@ bool createdir(const char *path) {
return mkdir(path, 0777)==0;
}
-size_t fixpackagedir(char *dir) {
- path(dir);
- size_t len = strlen(dir);
- if(len > 0 && dir[len-1] != PATHDIV) {
- dir[len] = PATHDIV;
- dir[len+1] = '\0';
- }
- return len;
-}
-
-bool subhomedir(char *dst, int len, const char *src) {
- const char *sub = strstr(src, "$HOME");
- if(!sub) sub = strchr(src, '~');
- if(sub && sub-src < len) {
- const char *home = getenv("HOME");
- if(!home || !home[0]) return false;
- dst[sub-src] = '\0';
- concatstring(dst, home, len);
- concatstring(dst, sub+(*sub == '~' ? 1 : strlen("$HOME")), len);
- }
- return true;
-}
-
-const char *sethomedir(const char *dir) {
- string pdir;
- copystring(pdir, dir);
- if(!subhomedir(pdir, sizeof(pdir), dir) || !fixpackagedir(pdir)) return NULL;
- copystring(homedir, pdir);
- return homedir;
-}
-
-const char *addpackagedir(const char *dir) {
- string pdir;
- copystring(pdir, dir);
- if(!subhomedir(pdir, sizeof(pdir), dir) || !fixpackagedir(pdir)) return NULL;
- char *filter = pdir;
- for(;;) {
- static int len = strlen("packages");
- filter = strstr(filter, "packages");
- if(!filter) break;
- if(filter > pdir && filter[-1] == PATHDIV && filter[len] == PATHDIV) break;
- filter += len;
- }
- packagedir &pf = packagedirs.add();
- pf.dir = filter ? newstring(pdir, filter-pdir) : newstring(pdir);
- pf.dirlen = filter ? filter-pdir : strlen(pdir);
- pf.filter = filter ? newstring(filter) : NULL;
- pf.filterlen = filter ? strlen(filter) : 0;
- return pf.dir;
-}
-
const char *findfile(const char *filename, const char *mode) {
static string s;
- if(homedir[0]) {
- formatstring(s, "%s%s", homedir, filename);
- if(fileexists(s, mode)) return s;
- if(mode[0]=='w' || mode[0]=='a') {
- string dirs;
- copystring(dirs, s);
- char *dir = strchr(dirs[0]==PATHDIV ? dirs+1 : dirs, PATHDIV);
- while(dir) {
- *dir = '\0';
- if(!fileexists(dirs, "d") && !createdir(dirs)) return s;
- *dir = PATHDIV;
- dir = strchr(dir+1, PATHDIV);
- }
- return s;
- }
- }
if(mode[0]=='w' || mode[0]=='a') return filename;
loopv(packagedirs) {
packagedir &pf = packagedirs[i];
@@ -442,10 +373,8 @@ int listfiles(const char *dir, const char *ext, vector<char *> &files) {
int dirs = 0;
if(listdir(dirname, true, ext, files)) dirs++;
string s;
- if(homedir[0]) {
- formatstring(s, "%s%s", homedir, dirname);
- if(listdir(s, false, ext, files)) dirs++;
- }
+ formatstring(s, "%s%s", ".", dirname);
+ if(listdir(s, false, ext, files)) dirs++;
loopv(packagedirs) {
packagedir &pf = packagedirs[i];
if(pf.filter && strncmp(dirname, pf.filter, dirlen == pf.filterlen-1 ? dirlen : pf.filterlen))