Implement ConcatenatePaths and MyGetFileTitle.
Modified: trunk/reactos/include/wine/setupapi.h
Modified: trunk/reactos/lib/setupapi/misc.c
Modified: trunk/reactos/lib/setupapi/setupapi.spec
_____
Modified: trunk/reactos/include/wine/setupapi.h
--- trunk/reactos/include/wine/setupapi.h 2005-05-21 12:21:30 UTC
(rev 15454)
+++ trunk/reactos/include/wine/setupapi.h 2005-05-21 12:23:07 UTC
(rev 15455)
@@ -669,6 +669,7 @@
VOID WINAPI AssertFail(LPSTR, UINT, LPSTR);
DWORD WINAPI CaptureAndConvertAnsiArg(PCSTR lpSrc, PWSTR *lpDst);
DWORD WINAPI CaptureStringArg(PCWSTR lpSrc, PWSTR *lpDst);
+BOOL WINAPI ConcatenatePaths(LPWSTR, LPCWSTR, DWORD, LPDWORD);
BOOL WINAPI DelayedMove(PCWSTR lpExistingFileName, PCWSTR
lpNewFileName);
BOOL WINAPI DoesUserHavePrivilege(PCWSTR lpPrivilegeName);
PWSTR WINAPI DuplicateString(PCWSTR lpSrc);
@@ -681,6 +682,7 @@
BOOL WINAPI IsUserAdmin(VOID);
PWSTR WINAPI MultiByteToUnicode(PCSTR lpMultiByteStr, UINT
uCodePage);
VOID WINAPI MyFree(PVOID lpMem);
+PWSTR WINAPI MyGetFileTitle(PCWSTR);
PVOID WINAPI MyMalloc(DWORD dwSize);
PVOID WINAPI MyRealloc(PVOID lpSrc, DWORD dwSize);
DWORD WINAPI OpenAndMapForRead(PCWSTR, PDWORD, PHANDLE, PHANDLE,
PVOID *);
_____
Modified: trunk/reactos/lib/setupapi/misc.c
--- trunk/reactos/lib/setupapi/misc.c 2005-05-21 12:21:30 UTC (rev
15454)
+++ trunk/reactos/lib/setupapi/misc.c 2005-05-21 12:23:07 UTC (rev
15455)
@@ -934,3 +934,113 @@
return dwError;
}
+
+
+/**********************************************************************
****
+ * MyGetFileTitle [SETUPAPI.@]
+ *
+ * Returns a pointer to the last part of a fully qualified file name.
+ *
+ * PARAMS
+ * lpFileName [I] File name
+ *
+ * RETURNS
+ * Pointer to a files name.
+ */
+LPWSTR WINAPI
+MyGetFileTitle(LPCWSTR lpFileName)
+{
+ LPWSTR ptr;
+ LPWSTR ret;
+ WCHAR c;
+
+ TRACE("%s\n", debugstr_w(lpFileName));
+
+ ptr = (LPWSTR)lpFileName;
+ ret = ptr;
+ while (TRUE)
+ {
+ c = *ptr;
+
+ if (c == 0)
+ break;
+
+ ptr++;
+ if (c == (WCHAR)'\\' || c == (WCHAR)'/' || c ==
(WCHAR)':')
+ ret = ptr;
+ }
+
+ return ret;
+}
+
+
+/**********************************************************************
****
+ * ConcatenatePaths [SETUPAPI.@]
+ *
+ * Concatenates two paths.
+ *
+ * PARAMS
+ * lpPath [I/O] Path to append path to
+ * lpAppend [I] Path to append
+ * dwBufferSize [I] Size of the path buffer
+ * lpRequiredSize [O] Required size for the concatenated path.
Optional
+ *
+ * RETURNS
+ * Success: TRUE
+ * Failure: FALSE
+ */
+BOOL WINAPI
+ConcatenatePaths(LPWSTR lpPath,
+ LPCWSTR lpAppend,
+ DWORD dwBufferSize,
+ LPDWORD lpRequiredSize)
+{
+ DWORD dwPathSize;
+ DWORD dwAppendSize;
+ DWORD dwTotalSize;
+ BOOL bBackslash = FALSE;
+
+ TRACE("%s %s %lu %p\n", debugstr_w(lpPath), debugstr_w(lpAppend),
+ dwBufferSize, lpRequiredSize);
+
+ dwPathSize = lstrlenW(lpPath);
+
+ /* Ignore trailing backslash */
+ if (lpPath[dwPathSize - 1] == (WCHAR)'\\')
+ dwPathSize--;
+
+ dwAppendSize = lstrlenW(lpAppend);
+
+ /* Does the source string have a leading backslash? */
+ if (lpAppend[0] == (WCHAR)'\\')
+ {
+ bBackslash = TRUE;
+ dwAppendSize--;
+ }
+
+ dwTotalSize = dwPathSize + dwAppendSize + 2;
+ if (lpRequiredSize != NULL)
+ *lpRequiredSize = dwTotalSize;
+
+ /* Append a backslash to the destination string */
+ if (bBackslash == FALSE)
+ {
+ if (dwPathSize < dwBufferSize)
+ {
+ lpPath[dwPathSize - 1] = (WCHAR)'\\';
+ dwPathSize++;
+ }
+ }
+
+ if (dwPathSize + dwAppendSize < dwBufferSize)
+ {
+ lstrcpynW(&lpPath[dwPathSize],
+ lpAppend,
+ dwAppendSize);
+ }
+
+ if (dwBufferSize >= dwTotalSize)
+ lpPath[dwTotalSize - 1] = 0;
+
+ return (dwBufferSize >= dwTotalSize);
+}
_____
Modified: trunk/reactos/lib/setupapi/setupapi.spec
--- trunk/reactos/lib/setupapi/setupapi.spec 2005-05-21 12:21:30 UTC
(rev 15454)
+++ trunk/reactos/lib/setupapi/setupapi.spec 2005-05-21 12:23:07 UTC
(rev 15455)
@@ -193,7 +193,7 @@
@ stdcall CaptureAndConvertAnsiArg(str ptr)
@ stdcall CaptureStringArg(wstr ptr)
@ stub CenterWindowRelativeToParent
-@ stub ConcatenatePaths
+@ stdcall ConcatenatePaths(wstr wstr long ptr)
@ stdcall DelayedMove(wstr wstr)
@ stub DelimStringToMultiSz
@ stub DestroyTextFileReadBuffer
@@ -220,7 +220,7 @@
@ stdcall MultiByteToUnicode(str long)
@ stub MultiSzFromSearchControl
@ stdcall MyFree(ptr)
-@ stub MyGetFileTitle
+@ stdcall MyGetFileTitle(wstr)
@ stdcall MyMalloc(long)
@ stdcall MyRealloc(ptr long)
@ stdcall OpenAndMapFileForRead(wstr ptr ptr ptr ptr)
@@ -424,8 +424,8 @@
@ stub SetupGetTargetPathW
@ stdcall SetupInitDefaultQueueCallback(long)
@ stdcall SetupInitDefaultQueueCallbackEx(long long long long ptr)
-@ stdcall SetupInitializeFileLogA (str long)
-@ stdcall SetupInitializeFileLogW (wstr long)
+@ stdcall SetupInitializeFileLogA(str long)
+@ stdcall SetupInitializeFileLogW(wstr long)
@ stub SetupInstallFileA
@ stub SetupInstallFileExA
@ stub SetupInstallFileExW
Show replies by date