#include "fusenet.h" #include "manifestnode.h" #include "list.h" #define HASHTABLE_SIZE 257 #define TOLOWER(a) (((a) >= L'A' && (a) <= L'Z') ? (L'a' + (a - L'A')) : (a)) inline DWORD HashString(LPCWSTR wzKey, DWORD dwHashSize, BOOL bCaseSensitive) { DWORD dwHash = 0; DWORD dwLen; DWORD i; dwLen = lstrlenW(wzKey); for (i = 0; i < dwLen; i++) { if (bCaseSensitive) dwHash = (dwHash * 65599) + (DWORD)wzKey[i]; else dwHash = (dwHash * 65599) + (DWORD)TOLOWER(wzKey[i]); } dwHash %= dwHashSize; return dwHash; } HRESULT CreateDirectoryHierarchy(LPWSTR pwzRootDir, LPWSTR pwzFilePath); HRESULT PathNormalize(LPWSTR pwzPath, LPWSTR *ppwzAbsolutePath, DWORD dwFlag); HRESULT IsUniqueManifest(List *pSeenAssemblyList, IAssemblyManifestImport *pManifestImport); HRESULT DequeueItem(List *pList, IAssemblyManifestImport ** ppManifestImport); HRESULT ProbeForAssembly(IAssemblyIdentity *pName, ManifestNode **ppManifestNode); HRESULT FindAllAssemblies (LPWSTR pwzDir, List *pAssemblyList); HRESULT TraverseManifestDependencyTrees(IAssemblyManifestImport *pManifestImport, List *pFileList, BOOL bListMode); HRESULT CrossReferenceFiles(LPWSTR pwzDir, List *pAssemblyFileList, List *pRawFiles); HRESULT PrivatizeAssemblies(List *pUniqueManifestList); HRESULT GetInitialDependencies(LPWSTR pwzTemplatePath, List *pManifestList); HRESULT CreateSubscriptionManifest(LPWSTR pwzApplicationManifestPath, LPWSTR pwzSubscriptionManifestPath, LPWSTR pwzUrl, LPWSTR pwzPollingInterval); HRESULT PrintDependencies(List *pRawFileList, List *pUniqueManifestList); HRESULT Usage();