grep.c
上传用户:jlteech
上传日期:2007-01-06
资源大小:349k
文件大小:3k
源码类别:

压缩解压

开发平台:

Visual C++

  1. /*
  2.  Copyright (C) 1996 Mike White
  3.  Permission is granted to any individual or institution to use, copy, or
  4.  redistribute this software so long as all of the original files are included,
  5.  that it is not sold for profit, and that this copyright notice is retained.
  6.  This is not a true grep function, rather it will look for files in an
  7.  archive, based on a particular pattern, including wildcards, and display
  8.  the results in the status/display window.
  9. */
  10. #include <windows.h>
  11. #include <string.h>
  12. #include <stdio.h>
  13. #ifdef __BORLANDC__
  14. #include <dir.h>
  15. #else
  16. #include <direct.h>
  17. #endif
  18. #include "wiz.h"
  19. #include "unzipwindlldecs.h"
  20. #include "helpids.h"
  21. extern char baseDir[PATH_MAX];
  22. char SearchPattern[PATH_MAX];
  23. /****************************************************************************
  24.     FUNCTION: GrepArchiveProc(HWND, unsigned, WPARAM, LPARAM)
  25.     PURPOSE:  Processes messages for "Grep Archive" dialog box
  26.     MESSAGES:
  27.     WM_INITDIALOG - initialize dialog box
  28.     WM_COMMAND    - Input received
  29. ****************************************************************************/
  30. #ifdef __BORLANDC__
  31. #pragma argsused
  32. #endif
  33. BOOL WINAPI
  34. GrepArchiveProc(HWND hDlg, WORD wMessage, WPARAM wParam, LPARAM lParam)
  35. {
  36. HWND hTemp;
  37. char *p;
  38. switch (wMessage) {
  39.    case WM_INITDIALOG:
  40.       hTemp = GetDlgItem(hDlg, lst1);
  41.       WinAssert(hTemp);
  42.       EnableWindow(hTemp, FALSE);
  43.       ShowWindow(hTemp, SW_HIDE);
  44.       hTemp = GetDlgItem(hDlg, edt1);
  45.       WinAssert(hTemp);
  46.       EnableWindow(hTemp, FALSE);
  47.       ShowWindow(hTemp, SW_HIDE);
  48.       SearchPattern[0] = ''; /* Init pattern */
  49.       CenterDialog(GetParent(hDlg), hDlg); /* center on parent */
  50.       break;
  51.    case WM_COMMAND:
  52.       switch (LOWORD(wParam)) {
  53.          case IDOK:
  54.             /* Get the pattern to search for */
  55.             GetWindowText(GetDlgItem(hDlg, IDC_PATTERN), SearchPattern, PATH_MAX);
  56.             for (p = SearchPattern; *p; p++)
  57.                 if (*p == '\')
  58.                     *p = '/';
  59.             /* Get directory to start in */
  60.             getcwd(baseDir, PATH_MAX);
  61.             lstrcat(baseDir, "\");
  62.             lstrcat(baseDir, "*.zip");
  63.             EndDialog(hDlg, TRUE);
  64.             break;
  65.          case IDCANCEL:
  66.             EndDialog(hDlg, TRUE);
  67.             break;
  68.          }
  69.       default:
  70.          break;
  71.    }
  72.    return FALSE;
  73. }
  74. char ScannedName[PATH_MAX];
  75. BOOL fScanning = FALSE;
  76. void SearchArchive(LPSTR sz)
  77. {
  78. extern char SearchPattern[PATH_MAX];
  79. lpDCL->ncflag = 0;
  80. lpDCL->ntflag = 0;
  81. lpDCL->nvflag = (int)(!uf.fFormatLong ? 1 : 2);
  82. lpDCL->nUflag = 1;
  83. lpDCL->nzflag = 0;
  84. lpDCL->ndflag = 0;
  85. lpDCL->noflag = 0;
  86. lpDCL->naflag = 0;
  87. lpDCL->lpszZipFN = sz;
  88. BufferOut("Searching %s for %sn", sz, SearchPattern);
  89. fScanning = TRUE;
  90. lpDCL->lpszExtractDir = NULL;
  91. Unz_SingleEntryPoint(0, NULL, 0, NULL, lpDCL, lpUserFunctions);
  92. fScanning = FALSE;
  93. }