static unsigned WINAPI parseFiles(void *args){ StatusData *sd = (StatusData*) args; int i, ret, count = listGetCount(sd->io->hwndList); wchar_t *disp, buf[BUFSIZ]; CoInitialize(NULL); for (i = 0; i < count ; i++){ if (!listGetItem(sd->io->hwndList, i, &disp, sd->io->po.fileIn, MAX_PATH)){ MessageBox(sd->hwndStatusDlg, L"Error: Could not read info from list!", NULL, MB_ICONEXCLAMATION); return FALSE; } _snwprintf_s(buf, BUFSIZ, _TRUNCATE, L"tSubGet Status - [%d / %d]", i+1, count); SetWindowText(sd->hwndStatusDlg, buf); SetDlgItemText(sd->hwndStatusDlg, IDE_S_FILENAME, disp); free(disp); sd->io->po.fileOut[0] = L'\0'; //Re-init to default while ((ret = tsgInit(&sd->p, &sd->io->po)) == PARSER_E_OUT_EXISTS){ int mbret; _snwprintf_s(buf, BUFSIZ, _TRUNCATE, L"Warning: %s exists, overwrite?", sd->io->po.fileOut); mbret = MessageBox(sd->hwndStatusDlg, buf, L"File Exists", MB_YESNO|MB_ICONQUESTION); if (mbret != IDYES) break; sd->io->po.overwriteOutput = TRUE; } if (ret != PARSER_OK) break; else if ((ret = tsgProcess(sd->p)) != PARSER_OK) break; else if (tsgWriteout(sd->p) != PARSER_OK) break; tsgClose(&sd->p); } switch (ret){ case PARSER_OK: case PARSER_E_ABORT: case PARSER_E_OUT_EXISTS: break; default:{ wchar_t fmt[BUFSIZ]; tsgGetError(ret, buf, BUFSIZ); _snwprintf_s(fmt, BUFSIZ, _TRUNCATE, L"Error: The parser returned the following:\r\n\r'%s'", buf); MessageBox(sd->hwndStatusDlg, fmt, NULL, MB_ICONEXCLAMATION); } } tsgClose(&sd->p); CoUninitialize(); return TRUE; }
FUNCTION void getFileLists(char *dirpath) { #ifdef PROC_TRACE traceFunc("== getFileLists(%s)\n", dirpath); #endif /* PROC_TRACE */ /* listInit(&gl.sarchList, 0, "source-archives list & md5sum map"); */ listInit(&cur.regfList, 0, "regular-files list"); listInit(&cur.offList, 0, "buffer-offset list"); #ifdef FLAG_NO_COPYRIGHT listInit(&gl.nocpyrtList, 0, "no-copyright list"); #endif /* FLAG_NO_COPYRIGHT */ listGetItem(&cur.regfList, cur.targetFile); return; } /* getFileLists */