1*8ccd4a63SDavid du Colombier #include "headers.h" 2*8ccd4a63SDavid du Colombier 3*8ccd4a63SDavid du Colombier SmbDirCache * smbmkdircache(SmbTree * t,char * path)4*8ccd4a63SDavid du Colombiersmbmkdircache(SmbTree *t, char *path) 5*8ccd4a63SDavid du Colombier { 6*8ccd4a63SDavid du Colombier long n; 7*8ccd4a63SDavid du Colombier SmbDirCache *c; 8*8ccd4a63SDavid du Colombier Dir *buf; 9*8ccd4a63SDavid du Colombier int fd; 10*8ccd4a63SDavid du Colombier char *fullpath = nil; 11*8ccd4a63SDavid du Colombier 12*8ccd4a63SDavid du Colombier smbstringprint(&fullpath, "%s%s", t->serv->path, path); 13*8ccd4a63SDavid du Colombier //smblogprintif(1, "smbmkdircache: path %s\n", fullpath); 14*8ccd4a63SDavid du Colombier fd = open(fullpath, OREAD); 15*8ccd4a63SDavid du Colombier free(fullpath); 16*8ccd4a63SDavid du Colombier 17*8ccd4a63SDavid du Colombier if (fd < 0) 18*8ccd4a63SDavid du Colombier return nil; 19*8ccd4a63SDavid du Colombier n = dirreadall(fd, &buf); 20*8ccd4a63SDavid du Colombier close(fd); 21*8ccd4a63SDavid du Colombier if (n < 0) { 22*8ccd4a63SDavid du Colombier free(buf); 23*8ccd4a63SDavid du Colombier return nil; 24*8ccd4a63SDavid du Colombier } 25*8ccd4a63SDavid du Colombier c = smbemalloc(sizeof(SmbDirCache)); 26*8ccd4a63SDavid du Colombier c->buf = buf; 27*8ccd4a63SDavid du Colombier c->n = n; 28*8ccd4a63SDavid du Colombier c->i = 0; 29*8ccd4a63SDavid du Colombier return c; 30*8ccd4a63SDavid du Colombier } 31*8ccd4a63SDavid du Colombier 32*8ccd4a63SDavid du Colombier void smbdircachefree(SmbDirCache ** cp)33*8ccd4a63SDavid du Colombiersmbdircachefree(SmbDirCache **cp) 34*8ccd4a63SDavid du Colombier { 35*8ccd4a63SDavid du Colombier SmbDirCache *c; 36*8ccd4a63SDavid du Colombier c = *cp; 37*8ccd4a63SDavid du Colombier if (c) { 38*8ccd4a63SDavid du Colombier free(c->buf); 39*8ccd4a63SDavid du Colombier free(c); 40*8ccd4a63SDavid du Colombier *cp = nil; 41*8ccd4a63SDavid du Colombier } 42*8ccd4a63SDavid du Colombier } 43*8ccd4a63SDavid du Colombier 44