Introduction
Introduction Statistics Contact Development Disclaimer Help
Fixing some dir handling. A path does not need to end in '/'. - geomyidae - A s…
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfri…
Log
Files
Refs
Tags
README
LICENSE
---
commit 7b14b6e74778cf0ddb328cf3e049a302be614b36
parent 5be8d044ed4e832c4c6a6b7f748b81a30695dc39
Author: Christoph Lohmann <[email protected]>
Date: Wed, 4 Jan 2017 21:54:49 +0100
Fixing some dir handling. A path does not need to end in '/'.
Diffstat:
M handlr.c | 67 +++++++++++++++--------------…
1 file changed, 33 insertions(+), 34 deletions(-)
---
diff --git a/handlr.c b/handlr.c
@@ -33,46 +33,45 @@ handledir(int sock, char *path, char *port, char *base, cha…
USED(sear);
pa = gstrdup(path);
- e = strrchr(pa, '/');
- if(e != nil) {
+ e = pa + strlen(pa) - 1;
+ if(e[0] == '/')
*e = '\0';
- par = gstrdup(pa);
- b = strrchr(par + strlen(base), '/');
- if(b != nil) {
- *b = '\0';
- tprintf(sock, "1..\t%s\t%s\t%s\r\n",
- par + strlen(base), ohost, port);
- }
- free(par);
-
- ndir = scandir(pa, &dirent, 0, alphasort);
- if(ndir < 0) {
- perror("scandir");
- free(pa);
- return;
- } else {
- for(i = 0; i < ndir; i++) {
- if(dirent[i]->d_name[0] == '.') {
- free(dirent[i]);
- continue;
- }
-
- type = gettype(dirent[i]->d_name);
- file = smprintf("%s/%s", pa,
- dirent[i]->d_name);
- if(stat(file, &st) >= 0 && S_ISDIR(st.st_mode))
- type = gettype("index.gph");
- e = file + strlen(base);
- tprintf(sock, "%c%s\t%s\t%s\t%s\r\n", *type->t…
- dirent[i]->d_name, e, ohost, port);
- free(file);
+ par = gstrdup(pa);
+ b = strrchr(par + strlen(base), '/');
+ if(b != nil) {
+ *b = '\0';
+ tprintf(sock, "1..\t%s\t%s\t%s\r\n",
+ par + strlen(base), ohost, port);
+ }
+ free(par);
+
+ ndir = scandir(pa, &dirent, 0, alphasort);
+ if(ndir < 0) {
+ perror("scandir");
+ free(pa);
+ return;
+ } else {
+ for(i = 0; i < ndir; i++) {
+ if(dirent[i]->d_name[0] == '.') {
free(dirent[i]);
+ continue;
}
- free(dirent);
+
+ type = gettype(dirent[i]->d_name);
+ file = smprintf("%s/%s", pa,
+ dirent[i]->d_name);
+ if(stat(file, &st) >= 0 && S_ISDIR(st.st_mode))
+ type = gettype("index.gph");
+ e = file + strlen(base);
+ tprintf(sock, "%c%s\t%s\t%s\t%s\r\n", *type->type,
+ dirent[i]->d_name, e, ohost, port);
+ free(file);
+ free(dirent[i]);
}
- tprintf(sock, ".\r\n");
+ free(dirent);
}
+ tprintf(sock, ".\r\n");
free(pa);
}
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.