Changeset 567 for trunk/client/src/ndpsmb.c
- Timestamp:
- Mar 7, 2011, 6:26:33 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/client/src/ndpsmb.c
r535 r567 133 133 static int ifL; 134 134 135 /* A mutex to serialize plugin calls because libsmb 3.3 is not thread safe. */ 136 /* while libsbm 3.5 should be threadsafe again, remember to remove it then */ 137 static NDMUTEX mutex; 138 139 static int lockInit (void) 140 { 141 return ph->fsphCreateMutex (&mutex); 142 } 143 144 static void lockClose (void) 145 { 146 ph->fsphCloseMutex (mutex); 147 } 148 149 static int lockRequest (void) 150 { 151 return ph->fsphRequestMutex (mutex, SEM_INDEFINITE_WAIT); 152 } 153 154 static void lockRelease (void) 155 { 156 ph->fsphReleaseMutex (mutex); 157 } 158 159 #define ENTER() do { \ 160 int rcLock = lockRequest(); \ 161 if (rcLock != NO_ERROR) \ 162 return rcLock; \ 163 } while (0) 164 165 #define LEAVE() do { \ 166 lockRelease(); \ 167 } while (0) 168 135 169 int APIENTRY NdpPluginLoad (PLUGINHELPERTABLE2L *pPHT) 136 170 { … … 150 184 ifL = 1; 151 185 } 186 lockInit(); 152 187 debugInit(); 153 188 debuglocal(9,"Working with %s bit fileio NDFS\n", ifL ? "64" : "32"); … … 159 194 { 160 195 debugDelete(); 196 lockClose(); 161 197 return NO_ERROR; 162 198 } … … 624 660 Resource *pRes = NULL; 625 661 662 ENTER(); 663 626 664 debuglocal(9,"NdpMountResource in\n"); 627 665 … … 659 697 } 660 698 debuglocal(9,"NdpMountResource rc=%d\n", rc); 699 LEAVE(); 661 700 return rc; 662 701 } … … 667 706 { 668 707 Resource *pRes = (Resource *)resource; 708 ENTER(); 669 709 dircache_delete(pRes->pdc); 670 710 memset(&pRes->srv, 0, sizeof(pRes->srv)); 671 711 free(pRes); 672 712 debuglocal(9,"NdpFreeResource %d\n", NO_ERROR); 713 LEAVE(); 673 714 return NO_ERROR; 674 715 } … … 761 802 FSALLOCATE fsa; 762 803 804 ENTER(); 763 805 debuglocal(9,"NdpRsrcQueryFSAllocate %08x\n", pfsa); 764 806 765 807 if (!pfsa) 766 808 { 809 LEAVE(); 767 810 return NO_ERROR; 768 811 } … … 778 821 pfsa->cbSector = 2048; 779 822 rc = (rc == 7 ? ERROR_BAD_DEV_TYPE : ERROR_ACCESS_DENIED); 823 LEAVE(); 780 824 return rc; 781 825 } … … 801 845 802 846 debuglocal(9,"NdpRsrcQueryFSAllocate %d/%d (cUnit = %d/cUnitAvail = %d/cbSector = %d)\n", rc, rc1, pfsa->cUnit, pfsa->cUnitAvail, pfsa->cbSector); 847 LEAVE(); 803 848 return rc; 804 849 } … … 812 857 unsigned long action; 813 858 Connection *pConn = NULL; 859 860 ENTER(); 814 861 815 862 debuglocal(9,"NdpCreateConnection in\n"); … … 823 870 { 824 871 debuglocal(9,"NdpCreateConnection ERROR_NOT_ENOUGH_MEMORY %d\n", rc); 872 LEAVE(); 825 873 return rc; 826 874 } … … 840 888 *pconn = (HCONNECTION)pConn; 841 889 debuglocal(9,"NdpCreateConnection [%p] %d\n", pConn, rc); 890 LEAVE(); 842 891 return rc; 843 892 } … … 850 899 Resource *pRes = pConn->pRes; 851 900 int rc; 901 902 ENTER(); 852 903 853 904 debuglocal(9,"NdpFreeConnection in [%p]\n", pConn); … … 862 913 free(pConn); 863 914 debuglocal(9,"NdpFreeConnection %d\n", NO_ERROR); 915 LEAVE(); 864 916 return NO_ERROR; 865 917 } … … 892 944 char path[CCHMAXPATH+1] = {0}; 893 945 946 ENTER(); 947 894 948 debuglocal(9,"NdpQueryPathInfo in [%p] <%s>\n", pConn, szPath); 895 949 … … 897 951 if (ph->fsphStrChr(szPath, '*') || ph->fsphStrChr(szPath, '?')) 898 952 { 953 LEAVE(); 899 954 return ERROR_FILE_NOT_FOUND; 900 955 } … … 996 1051 debuglocal(9,"NdpQueryPathInfo <%s> (%s) %d\n", szPath, path, rc); 997 1052 1053 LEAVE(); 998 1054 return rc; 999 1055 } … … 1014 1070 filelist_state state; 1015 1071 char * p; 1072 1073 ENTER(); 1016 1074 1017 1075 debug_printf("NdpFindStart in [%p]\n", pConn); … … 1089 1147 1090 1148 debuglocal(9,"NdpFindStart <%s> (%s) cnt %d %d\n", szPath, path, count, rc); 1091 1149 LEAVE(); 1092 1150 return rc; 1093 1151 } … … 1125 1183 char path[CCHMAXPATH+1] = {0}; 1126 1184 smbwrp_fileinfo finfo; 1185 1186 ENTER(); 1127 1187 1128 1188 debug_printf("NdpSetPathInfo in [%p]\n", pConn); … … 1146 1206 } while (0); 1147 1207 debuglocal(9,"NdpSetPathInfo <%s> (%s) %d\n", szPathName, path, rc); 1148 1208 LEAVE(); 1149 1209 return rc; 1150 1210 } … … 1236 1296 return ERROR_EAS_NOT_SUPPORTED; 1237 1297 } 1298 1299 ENTER(); 1300 1238 1301 finfo = (smbwrp_fileinfo *)fdata.pData; 1239 1302 path = finfo->fname; … … 1243 1306 char *pchBuffer = (char *)malloc(cbBuffer); 1244 1307 if (!pchBuffer) 1308 { 1309 LEAVE(); 1245 1310 return ERROR_NOT_ENOUGH_MEMORY; 1311 } 1246 1312 1247 1313 do { … … 1276 1342 free(pchBuffer); 1277 1343 debuglocal(9,"NdpEAQuery <%s> %d %d %d\n", pfi->pszName, rc, pFEASrc->cbList, pFEAList->cbList); 1278 1344 LEAVE(); 1279 1345 return rc; 1280 1346 } … … 1307 1373 return ERROR_EAS_NOT_SUPPORTED; 1308 1374 } 1375 1376 ENTER(); 1377 1309 1378 finfo = (smbwrp_fileinfo *)fdata.pData; 1310 1379 path = finfo->fname; … … 1327 1396 } while (0); 1328 1397 debuglocal(9,"NdpEASet %d\n", rc); 1329 1398 LEAVE(); 1330 1399 return rc; 1331 1400 } … … 1360 1429 return ERROR_EAS_NOT_SUPPORTED; 1361 1430 } 1431 1432 ENTER(); 1362 1433 1363 1434 debuglocal(9, "remove me NdpEASize before finfo =\n"); … … 1371 1442 *pulEASize = easize; 1372 1443 debuglocal(9,"NdpEASize <%s> cached %d\n", path, easize); 1444 LEAVE(); 1373 1445 return NO_ERROR; 1374 1446 } … … 1378 1450 char *pchBuffer = (char *)malloc(cbBuffer); 1379 1451 if (!pchBuffer) 1452 { 1453 LEAVE(); 1380 1454 return ERROR_NOT_ENOUGH_MEMORY; 1455 } 1381 1456 1382 1457 do { … … 1407 1482 free(pchBuffer); 1408 1483 debuglocal(9,"NdpEASize <%s> %d %d\n", pfi->pszName, *pulEASize, rc); 1409 1484 LEAVE(); 1410 1485 return rc; 1411 1486 } … … 1421 1496 debuglocal(9,"NdpSetCurrentDir in [%p]\n", pConn); 1422 1497 1498 ENTER(); 1499 1423 1500 do { 1424 1501 rc = pathparser(pRes, pConn, szPath, path); … … 1431 1508 } while (0); 1432 1509 debuglocal(9,"NdpSetCurrentDir <%s> (%s) %d\n", szPath, path, rc); 1433 1510 LEAVE(); 1434 1511 return rc; 1435 1512 } … … 1454 1531 unsigned long action; 1455 1532 char path[CCHMAXPATH+1] = {0}; 1533 1534 ENTER(); 1456 1535 1457 1536 debuglocal(9,"NdpForceDelete in [%p]\n", pConn); … … 1469 1548 } while (0); 1470 1549 debuglocal(9,"NdpForceDelete <%s> (%s) %d\n", szFile, path, rc); 1471 1550 LEAVE(); 1472 1551 return rc; 1473 1552 } … … 1480 1559 unsigned long action; 1481 1560 char path[CCHMAXPATH+1] = {0}; 1561 1562 ENTER(); 1482 1563 1483 1564 debuglocal(9,"NdpCreateDir in [%p]\n", pConn); … … 1495 1576 } while (0); 1496 1577 debuglocal(9,"NdpCreateDir <%s> (%s) %d\n", szDirName, path, rc); 1497 1578 LEAVE(); 1498 1579 return rc; 1499 1580 } … … 1506 1587 unsigned long action; 1507 1588 char path[CCHMAXPATH+1] = {0}; 1589 1590 ENTER(); 1508 1591 1509 1592 debuglocal(9,"NdpDeleteDir in [%p]\n", pConn); … … 1521 1604 } while (0); 1522 1605 debuglocal(9,"NdpDeleteDir <%s> (%s) %d\n", szDir, path, rc); 1523 1606 LEAVE(); 1524 1607 return rc; 1525 1608 } … … 1534 1617 int l1, l2; 1535 1618 char * p = szDst; 1619 1620 ENTER(); 1536 1621 1537 1622 debuglocal(9,"NdpMove in [%p] from <%s> to <%s>\n", pConn, szSrc, szDst); … … 1563 1648 } while (0); 1564 1649 debuglocal(9,"NdpMove <%s> -> <%s> (%s) %d\n", szSrc, szDst, src, rc); 1565 1650 LEAVE(); 1566 1651 return rc; 1567 1652 } … … 1590 1675 int rc = 0; 1591 1676 char path[CCHMAXPATH+1] = {0}; 1677 1678 ENTER(); 1592 1679 1593 1680 debuglocal(9,"smbopen in [%p] %d\n", pConn, pConn->file.fd); … … 1631 1718 debuglocal(9,"smbopen NdpFileEASet %d. pFEAList->cbList %d\n", rc1, pFEAList->cbList); 1632 1719 } 1633 1720 LEAVE(); 1634 1721 return rc; 1635 1722 } … … 1671 1758 smbwrp_fileinfo finfo; 1672 1759 char path[CCHMAXPATH+1] = {0}; 1760 1761 ENTER(); 1673 1762 1674 1763 debuglocal(9,"NdpSetFileAttribute in [%p]\n", pConn); … … 1686 1775 } while (0); 1687 1776 debuglocal(9,"NdpSetFileAttribute <%s> (%s) %04x %d\n", szFileName, path, usAttr, rc); 1688 1777 LEAVE(); 1689 1778 return rc; 1690 1779 } … … 1730 1819 smbwrp_fileinfo finfo; 1731 1820 1821 ENTER(); 1822 1732 1823 debug_printf("NdpFileQueryInfo in [%p]\n", pConn); 1733 1824 do { … … 1746 1837 } while (0); 1747 1838 debuglocal(9,"NdpFileQueryInfo <%s> %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, rc); 1748 1839 LEAVE(); 1749 1840 return rc; 1750 1841 } … … 1773 1864 if (!pchBuffer) 1774 1865 return ERROR_NOT_ENOUGH_MEMORY; 1866 1867 ENTER(); 1775 1868 1776 1869 do { … … 1810 1903 free(pchBuffer); 1811 1904 debuglocal(9,"NdpFileEAQuery out <%s>/%d pFEASrc->cbList=%d pFEAList->cbList=%d rc=%d\n", pConn->file.fname, pConn->file.fd, pFEASrc->cbList, pFEAList->cbList, rc); 1812 1905 LEAVE(); 1813 1906 return rc; 1814 1907 } … … 1831 1924 return ERROR_EAS_NOT_SUPPORTED; 1832 1925 } 1926 1927 ENTER(); 1833 1928 1834 1929 do { … … 1856 1951 } while (0); 1857 1952 debuglocal(9,"NdpFileEASet %d\n", rc); 1858 1953 LEAVE(); 1859 1954 return rc; 1860 1955 } … … 1884 1979 if (!pchBuffer) 1885 1980 return ERROR_NOT_ENOUGH_MEMORY; 1981 1982 ENTER(); 1886 1983 1887 1984 do { … … 1917 2014 free(pchBuffer); 1918 2015 debuglocal(9,"NdpFileEASize %d %d\n", *pulEASize, rc); 1919 2016 LEAVE(); 1920 2017 return rc; 1921 2018 } … … 1927 2024 int rc = 0; 1928 2025 unsigned long action, attrFile; 2026 2027 ENTER(); 1929 2028 1930 2029 debug_printf("NdpFileSetInfo in [%p]\n", pConn); … … 1946 2045 } while (0); 1947 2046 debuglocal(9,"NdpFileSetInfo <%s> %08x %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, attrFile, rc); 1948 2047 LEAVE(); 1949 2048 return NO_ERROR; 1950 2049 } … … 1956 2055 int rc = 0; 1957 2056 unsigned long action; 2057 2058 ENTER(); 1958 2059 1959 2060 debuglocal(9,"NdpFileSetFilePtrL in [%p]\n", pConn); … … 1972 2073 } while (0); 1973 2074 debuglocal(9,"NdpFileSetFilePtrL <%s> %lld %lu %lld %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, llOffset, ulMethod, *pllActual, rc); 1974 2075 LEAVE(); 1975 2076 return rc; 1976 2077 } … … 1992 2093 unsigned long action; 1993 2094 2095 ENTER(); 2096 1994 2097 debuglocal(9,"NdpFileClose in [%p] %d <%s>\n", pConn, pConn->file.fd, pConn->file.fd < 0 ? "!null!" : pConn->file.fname); 1995 2098 … … 2007 2110 2008 2111 pConn->file.fd = -1; 2112 LEAVE(); 2009 2113 return rc; 2010 2114 } … … 2031 2135 unsigned long action; 2032 2136 2137 ENTER(); 2138 2033 2139 debuglocal(9,"NdpFileNewSizeL in [%p]\n", pConn); 2034 2140 … … 2044 2150 } while (0); 2045 2151 debuglocal(9,"NdpFileNewSizeL <%s> %lld %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, llLen, rc); 2046 2152 LEAVE(); 2047 2153 return rc; 2048 2154 } … … 2059 2165 unsigned long action; 2060 2166 ULONG ulReadCompleted = 0; 2167 2168 ENTER(); 2061 2169 2062 2170 debuglocal(9,"NdpFileRead in [%p]\n", pConn); … … 2100 2208 2101 2209 debuglocal(9,"NdpFileRead <%s> %lu %lu %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, ulRead, *pulActual, rc); 2102 2210 LEAVE(); 2103 2211 return rc; 2104 2212 } … … 2112 2220 unsigned long onedone; 2113 2221 unsigned long action; 2222 2223 ENTER(); 2114 2224 2115 2225 debuglocal(9,"NdpFileWrite in [%p]\n", pConn); … … 2131 2241 } while (0); 2132 2242 debuglocal(9,"NdpFileWrite <%s> %lu %lu %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, ulWrite, *pulActual, rc); 2133 2134 return rc; 2135 } 2136 2243 LEAVE(); 2244 return rc; 2245 } 2246
Note:
See TracChangeset
for help on using the changeset viewer.