version 2.5, 2005/02/25 10:35:55
|
version 2.10, 2005/02/27 08:31:36
|
|
|
#define todo_wine | #define todo_wine |
#endif | #endif |
| |
|
#define TVFS |
|
|
#include <winerror.h> | #include <winerror.h> |
#include <fdi.h> | #include <fdi.h> |
#include <fcntl.h> | #include <fcntl.h> |
|
|
return 0; | return 0; |
} | } |
| |
FNFDINOTIFY(dummy_notification){ |
|
printf(" FNFDINOTIFY just called with %d, %d \n",fdint,pfdin); |
|
return 0; |
|
} |
|
| |
|
/*Possible non trivial addition: |
|
Notify receives some information about the cab file(see FDI documentation). |
|
Since this info is different depending on the value of fdint, and Notify should |
|
be generic, it is not simple or nice to check this information. |
|
*/ |
FNFDINOTIFY(notification_function) | FNFDINOTIFY(notification_function) |
{ | { |
printf(" FNFDINOTIFY real just called with %d, %d \n",fdint,pfdin); |
|
switch (fdint) | switch (fdint) |
{ | { |
case fdintCABINET_INFO: | case fdintCABINET_INFO: |
{ | { |
printf("fdintCABINET_INFO\n"); |
|
return 0; | return 0; |
} | } |
case fdintPARTIAL_FILE: | case fdintPARTIAL_FILE: |
{ | { |
printf("dintPARTIAL_FILE\n"); |
|
return 0; | return 0; |
} | } |
case fdintCOPY_FILE: | case fdintCOPY_FILE: |
{ | { |
int fih = 0; | int fih = 0; |
char target[256]; | char target[256]; |
|
|
printf("fdintCOPY_FILE\n"); |
|
printf(" file name: %s\n", pfdin->psz1); |
|
sprintf(target, "./%s",pfdin->psz1); | sprintf(target, "./%s",pfdin->psz1); |
printf("%s\n",target); |
fih = tvfs_open (target, |
|
|
fih = 0; |
|
/*real_open( |
|
target, |
|
_O_BINARY | _O_CREAT | _O_WRONLY | _O_SEQUENTIAL, | _O_BINARY | _O_CREAT | _O_WRONLY | _O_SEQUENTIAL, |
_S_IREAD | _S_IWRITE | _S_IREAD | _S_IWRITE |
); | ); |
*/ |
|
return fih; | return fih; |
} | } |
case fdintCLOSE_FILE_INFO: | case fdintCLOSE_FILE_INFO: |
{ | { |
|
char filebuf[256]; |
|
int result; |
| |
printf("fdintCLOSE_FILE_INFO\n"); |
/* |
return 0; |
printf("Testing direct file compare and lseek of %s\n", name_simple_txt); |
|
printf("Reading and comparing file\n"); |
|
result = tvfs_read(7, filebuf, size_simple_txt); |
|
result = tvfs_compare( filebuf , file_simple_txt, size_simple_txt); |
|
|
|
*/ |
|
tvfs_close(pfdin->hf); |
|
return TRUE; |
} | } |
case fdintNEXT_CABINET: | case fdintNEXT_CABINET: |
{ | { |
|
|
printf("fdintNEXT_CABINET\n"); |
|
return 0; | return 0; |
} | } |
case fdintENUMERATE: | case fdintENUMERATE: |
{ | { |
printf("fdintENUMERATE\n"); |
|
return 0; | return 0; |
} | } |
} | } |
|
|
cabinfo.hasprev , | cabinfo.hasprev , |
cabinfo.hasnext ); | cabinfo.hasnext ); |
} | } |
|
#ifndef TVFS |
|
FNREAD(real_read) { |
|
int szBuffer = _read(hf,pv,cb); |
|
printf(" FNREAD (read) just called with %d, %d, %d\n",hf, pv, cb); |
|
printf(" FNREAD (read) returning size (%d)\n",szBuffer); |
|
return szBuffer; |
|
} |
|
FNCLOSE(real_close) { |
|
int closevalue = _close(hf); |
|
printf(" FNCLOSE (real) just called with %d - returning %d\n",hf,closevalue); |
|
return closevalue; |
|
} |
|
|
|
FNWRITE(real_write) { |
|
int write_value = _write(hf, pv, cb); |
|
printf(" FNWRITE just called with %d, %d, %d - returning %d\n",hf, pv, cb, write_value); |
|
return write_value; |
|
} |
|
|
|
FNSEEK(real_seek) { |
|
long lseek_value = _lseek(hf, dist, seektype); |
|
printf(" FNSEEK just called with %d, %d, %d - returning %d\n",hf, dist, seektype,lseek_value); |
|
return lseek_value; |
|
} |
|
|
|
FNOPEN(real_open) { |
|
int handler = _open(pszFile,oflag,pmode); |
|
printf(" FNOPEN (real) just called with %s, %d, %d\n",pszFile, oflag, pmode); |
|
printf(" FNOPEN (real) returning handler (%d)\n",handler); |
|
return handler; |
|
} |
|
#endif |
| |
static void CheckCabInfo(char * cabname, | static void CheckCabInfo(char * cabname, |
FDICABINETINFO cabinfo, | FDICABINETINFO cabinfo, |
|
|
hfdi_unknown_tvfs = FDICreate( | hfdi_unknown_tvfs = FDICreate( |
final_alloc, | final_alloc, |
final_free, | final_free, |
tvfs_open, |
#ifdef TVFS |
tvfs_read, |
tvfs_open, tvfs_read, tvfs_write, tvfs_close, tvfs_lseek, |
tvfs_write, |
#else |
tvfs_close, |
real_open, real_read, real_write, real_close,real_seek, |
tvfs_lseek, |
#endif |
cpuUNKNOWN, | cpuUNKNOWN, |
&error_structure | &error_structure |
); | ); |
|
|
} | } |
| |
static void TestInfo(void) { | static void TestInfo(void) { |
|
#ifdef TVFS |
int fd; | int fd; |
| |
FDICABINETINFO fdi_cabinfo_dummy, fdi_cabinfo_simple, fdi_cabinfo_complex; | FDICABINETINFO fdi_cabinfo_dummy, fdi_cabinfo_simple, fdi_cabinfo_complex; |
|
|
CheckCabInfo("complex.cab",fdi_cabinfo_complex,12918,1,2,0,0,0,0,0); | CheckCabInfo("complex.cab",fdi_cabinfo_complex,12918,1,2,0,0,0,0,0); |
| |
tvfs_close(fd); | tvfs_close(fd); |
|
tvfs_free(); |
| |
printf("Ending TestInfo()\n"); | printf("Ending TestInfo()\n"); |
printf(" SEEK_CUR %d \n",SEEK_CUR); |
#endif |
} | } |
| |
static void TestCopy(void){ | static void TestCopy(void){ |
|
|
|
char name_file_path[256]; |
|
int result; |
|
|
printf("Starting TestCopy()\n"); | printf("Starting TestCopy()\n"); |
printf("---simple.cab\n"); | printf("---simple.cab\n"); |
|
#ifdef TVFS |
|
tvfs_create( name_simple_cab, file_simple_cab, size_simple_cab); |
|
#endif |
FDICopy(hfdi_unknown_tvfs, | FDICopy(hfdi_unknown_tvfs, |
"simple.cab", | "simple.cab", |
"", | "", |
|
|
NULL, | NULL, |
NULL); | NULL); |
| |
|
#ifdef TVFS |
|
/* Filename when extracted is ./<filename> */ |
|
sprintf(name_file_path, "./%s", name_simple_txt); |
|
result = tvfs_compare(name_file_path, file_simple_txt, size_simple_txt); |
|
if (result) |
|
printf ("File compare failed!\n"); |
|
tvfs_free(); |
|
#endif |
|
|
|
|
|
printf("---complex.cab\n"); |
|
#ifdef TVFS |
|
tvfs_create( name_complex_cab, file_complex_cab, size_complex_cab); |
|
#endif |
|
FDICopy(hfdi_unknown_tvfs, |
|
"complex.cab", |
|
"", |
|
0, |
|
notification_function, |
|
NULL, |
|
NULL); |
|
|
|
#ifdef TVFS |
|
/* Filename when extracted is ./<filename> */ |
|
sprintf(name_file_path, "./%s", name_README); |
|
result = tvfs_compare(name_file_path, file_README, size_README); |
|
if (result) |
|
printf ("File compare failed!\n"); |
|
tvfs_free(); |
|
#endif |
|
|
|
|
|
|
printf("Ending TestCopy()\n"); | printf("Ending TestCopy()\n"); |
} | } |
| |