summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aquarela/smbdircache.c
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/aquarela/smbdircache.c
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/aquarela/smbdircache.c')
-rwxr-xr-xsys/src/cmd/aquarela/smbdircache.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/sys/src/cmd/aquarela/smbdircache.c b/sys/src/cmd/aquarela/smbdircache.c
new file mode 100755
index 000000000..d7ee3c412
--- /dev/null
+++ b/sys/src/cmd/aquarela/smbdircache.c
@@ -0,0 +1,43 @@
+#include "headers.h"
+
+SmbDirCache *
+smbmkdircache(SmbTree *t, char *path)
+{
+ long n;
+ SmbDirCache *c;
+ Dir *buf;
+ int fd;
+ char *fullpath = nil;
+
+ smbstringprint(&fullpath, "%s%s", t->serv->path, path);
+//smblogprintif(1, "smbmkdircache: path %s\n", fullpath);
+ fd = open(fullpath, OREAD);
+ free(fullpath);
+
+ if (fd < 0)
+ return nil;
+ n = dirreadall(fd, &buf);
+ close(fd);
+ if (n < 0) {
+ free(buf);
+ return nil;
+ }
+ c = smbemalloc(sizeof(SmbDirCache));
+ c->buf = buf;
+ c->n = n;
+ c->i = 0;
+ return c;
+}
+
+void
+smbdircachefree(SmbDirCache **cp)
+{
+ SmbDirCache *c;
+ c = *cp;
+ if (c) {
+ free(c->buf);
+ free(c);
+ *cp = nil;
+ }
+}
+