[Wine-devel] Eter's patch is applied to winehq repo 04/24/13
builder-robot на etersoft.ru
builder-robot на etersoft.ru
Ср Апр 24 22:50:31 MSK 2013
New Etersoft's patches since last build time:
commit 9d08045ad1f8766aeee18c9c0d83647fff3515b7
Author: Sergey Guralnik <serhio на etersoft.ru>
extrac32: Add /D switch support.
---
commit 9d08045ad1f8766aeee18c9c0d83647fff3515b7
Author: Sergey Guralnik <serhio на etersoft.ru>
Date: Mon Apr 22 10:43:17 2013 +0300
extrac32: Add /D switch support.
diff --git a/programs/extrac32/extrac32.c b/programs/extrac32/extrac32.c
index 2126c04..63205e8 100644
--- a/programs/extrac32/extrac32.c
+++ b/programs/extrac32/extrac32.c
@@ -31,6 +31,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(extrac32);
static BOOL force_mode;
+static BOOL show_content;
static void create_target_directory(LPWSTR Target)
{
@@ -56,12 +57,37 @@ static UINT WINAPI ExtCabCallback(PVOID Context, UINT Notification, UINT_PTR Par
{
case SPFILENOTIFY_FILEINCABINET:
pInfo = (FILE_IN_CABINET_INFO_W*)Param1;
- lstrcpyW(pInfo->FullTargetName, (LPCWSTR)Context);
- lstrcatW(pInfo->FullTargetName, pInfo->NameInCabinet);
- /* SetupIterateCabinet() doesn't create full path to target by itself,
- so we should do it manually */
- create_target_directory(pInfo->FullTargetName);
- return FILEOP_DOIT;
+ if(show_content)
+ {
+ FILETIME ft;
+ SYSTEMTIME st;
+ CHAR date[12], time[12], buf[2 * MAX_PATH];
+ int count;
+ DWORD dummy;
+
+ /* DosDate and DosTime already represented at local time */
+ DosDateTimeToFileTime(pInfo->DosDate, pInfo->DosTime, &ft);
+ FileTimeToSystemTime(&ft, &st);
+ GetDateFormatA(0, 0, &st, "MM'-'dd'-'yyyy", date, sizeof date);
+ GetTimeFormatA(0, 0, &st, "HH':'mm':'ss", time, sizeof time);
+ count = wsprintfA(buf, "%s %s %c%c%c%c %15u %S\n", date, time,
+ pInfo->DosAttribs & FILE_ATTRIBUTE_ARCHIVE ? 'A' : '-',
+ pInfo->DosAttribs & FILE_ATTRIBUTE_HIDDEN ? 'H' : '-',
+ pInfo->DosAttribs & FILE_ATTRIBUTE_READONLY ? 'R' : '-',
+ pInfo->DosAttribs & FILE_ATTRIBUTE_SYSTEM ? 'S' : '-',
+ pInfo->FileSize, pInfo->NameInCabinet);
+ WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf, count, &dummy, NULL);
+ return FILEOP_SKIP;
+ }
+ else
+ {
+ lstrcpyW(pInfo->FullTargetName, (LPCWSTR)Context);
+ lstrcatW(pInfo->FullTargetName, pInfo->NameInCabinet);
+ /* SetupIterateCabinet() doesn't create full path to target by itself,
+ so we should do it manually */
+ create_target_directory(pInfo->FullTargetName);
+ return FILEOP_DOIT;
+ }
case SPFILENOTIFY_FILEEXTRACTED:
pFilePaths = (FILEPATHS_W*)Param1;
WINE_TRACE("Extracted %s\n", wine_dbgstr_w(pFilePaths->Target));
@@ -281,14 +307,14 @@ int PASCAL wWinMain(HINSTANCE hInstance, HINSTANCE prev, LPWSTR cmdline, int sho
/* Copy file */
copy_file(cabfile, path);
break;
+ case 'D':
+ /* Display CAB archive */
+ show_content = TRUE;
+ /* Fall through */
case 'E':
/* Extract CAB archive */
extract(cabfile, path);
break;
- case 'D':
- /* Display CAB archive */
- WINE_FIXME("/D not implemented\n");
- break;
}
return 0;
}
Подробная информация о списке рассылки Wine-devel