Changeset 976 for trunk/client/src/smbwrp.c
- Timestamp:
- Aug 26, 2016, 7:04:49 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/client/src/smbwrp.c
r968 r976 730 730 strncat(fullname, finfo->fname, sizeof(fullname) - strlen(fullname) -1); 731 731 strncpy(st->finfo.fname, fullname, sizeof(st->finfo.fname)); 732 addFindInfoL(st->pConn , st->plist, &st->finfo, st->ulAttribute, st->dir_mask);732 addFindInfoL(st->pConn->pRes, st->plist, &st->finfo, st->ulAttribute, st->dir_mask); 733 733 } 734 734 return; … … 804 804 uint16_t info_level; 805 805 void *dircachectx = NULL; 806 smbwrp_fileinfo wrpfinfo;807 806 Resource *pRes = state->pConn->pRes; 808 807 809 808 // Try to get the listing from cache. 810 if (dircache_list_files(pRes->pdc, fn, state->plist, 811 state->mask, (char*) state->fullpath, &num_finfo)) 809 debuglocal(pRes, 9, "list_files: check cache %s\n", state->fullpath); 810 if (dircache_list_files(pRes->pdc, addFindInfoCachedL, state->plist, 811 state->dir_mask, (char*) state->fullpath, &num_finfo)) { 812 debuglocal(pRes, 9, "list_files: %s, got %d from cache\n", 813 state->fullpath, num_finfo); 812 814 return(num_finfo); // Got from cache 815 } 813 816 814 817 if (cli_has_async_calls(cli)) { … … 841 844 goto fail; 842 845 843 dircachectx = dircache_write_begin(pRes->pdc, state-> mask,846 dircachectx = dircache_write_begin(pRes->pdc, state->dir_mask, 844 847 (char*) state->fullpath, num_finfo); 845 848 … … 847 850 848 851 for (i=0; i<num_finfo; i++) { 852 // dinamically allocate finfo data structure, cache can keep only pointers 853 smbwrp_fileinfo* wrpfinfo = (smbwrp_fileinfo*)malloc( sizeof(smbwrp_fileinfo)); 849 854 //as samba and this client have different finfo, we need to convert 850 memset(&wrpfinfo, 0, sizeof(wrpfinfo)); 851 wrpfinfo.size = finfo[i].size; 852 wrpfinfo.attr = finfo[i].mode; 853 wrpfinfo.ctime = convert_timespec_to_time_t(finfo[i].ctime_ts); 854 wrpfinfo.mtime = convert_timespec_to_time_t(finfo[i].mtime_ts); 855 wrpfinfo.atime = convert_timespec_to_time_t(finfo[i].atime_ts); 856 wrpfinfo.easize = finfo[i].easize; 857 strncpy(wrpfinfo.fname, finfo[i].name, sizeof(wrpfinfo.fname) -1); 858 fn(cli->dfs_mountpoint, &wrpfinfo, mask, state); 859 // Also add the entry to the cache. 860 dircache_write_entry(pRes->pdc, dircachectx, &wrpfinfo); 855 memset(wrpfinfo, 0, sizeof(smbwrp_fileinfo)); 856 wrpfinfo->size = finfo[i].size; 857 wrpfinfo->attr = finfo[i].mode; 858 wrpfinfo->ctime = convert_timespec_to_time_t(finfo[i].ctime_ts); 859 wrpfinfo->mtime = convert_timespec_to_time_t(finfo[i].mtime_ts); 860 wrpfinfo->atime = convert_timespec_to_time_t(finfo[i].atime_ts); 861 wrpfinfo->easize = finfo[i].easize; 862 strncpy(wrpfinfo->fname, finfo[i].name, sizeof(wrpfinfo->fname) -1); 863 // add to netdrive plist 864 debuglocal(pRes, 9,"list_files: dircachectx %x, %s->%p\n", 865 dircachectx, wrpfinfo->fname, wrpfinfo); 866 addFindInfoCachedL(state->plist, wrpfinfo); 867 // Also add the entry to the cache, this pointer will be released 868 // when cache will be deleted 869 dircache_write_entry(pRes->pdc, dircachectx, wrpfinfo->fname, wrpfinfo); 861 870 } 862 871
Note:
See TracChangeset
for help on using the changeset viewer.