From: <lab...@us...> - 2015-05-03 15:15:58
|
Revision: 1519 http://sourceforge.net/p/opengtoolkit/svn/1519 Author: labviewer Date: 2015-05-03 15:15:55 +0000 (Sun, 03 May 2015) Log Message: ----------- Add some preliminary support for link handling Modified Paths: -------------- trunk/lvzip/c_source/lvutil.c trunk/lvzip/c_source/lvutil.h trunk/lvzip/source/fileutil.llb/FILE Copy Fork From File.vi trunk/lvzip/source/fileutil.llb/FILE Copy Fork To File.vi trunk/lvzip/source/fileutil.llb/FILE Get Directory Content.vi trunk/lvzip/source/fileutil.llb/FILE Open File Refnum.vi trunk/lvzip/source/fileutil.llb/FILE Resource File Info.vi trunk/lvzip/source/fileutil.llb/FILE Resource Header.ctl trunk/lvzip/source/fileutil.llb/FILE Size Padding.vi trunk/lvzip/source/lvzip.llb/ZLIB Block Size.vi trunk/lvzip/source/lvzip.llb/ZLIB CRC32.vi trunk/lvzip/source/lvzip.llb/ZLIB Close Read File.vi trunk/lvzip/source/lvzip.llb/ZLIB Close Unzip Archive.vi trunk/lvzip/source/lvzip.llb/ZLIB Close Write File.vi trunk/lvzip/source/lvzip.llb/ZLIB Close Zip Archive.vi trunk/lvzip/source/lvzip.llb/ZLIB Common Path to Specific Path.vi trunk/lvzip/source/lvzip.llb/ZLIB Compress Directory.vi trunk/lvzip/source/lvzip.llb/ZLIB Compress File Info.ctl trunk/lvzip/source/lvzip.llb/ZLIB Convert File Info.vi trunk/lvzip/source/lvzip.llb/ZLIB Deflate.vi trunk/lvzip/source/lvzip.llb/ZLIB Delete Files From Archive.vi trunk/lvzip/source/lvzip.llb/ZLIB Enumerate File Contents.vi trunk/lvzip/source/lvzip.llb/ZLIB Extract All Files To Dir.vi trunk/lvzip/source/lvzip.llb/ZLIB Extract File.vi trunk/lvzip/source/lvzip.llb/ZLIB Extract Stream.vi trunk/lvzip/source/lvzip.llb/ZLIB Extract.vi trunk/lvzip/source/lvzip.llb/ZLIB File Info.ctl trunk/lvzip/source/lvzip.llb/ZLIB File Information.vi trunk/lvzip/source/lvzip.llb/ZLIB Get Current File Info.vi trunk/lvzip/source/lvzip.llb/ZLIB Get File CRC32.vi trunk/lvzip/source/lvzip.llb/ZLIB Get File.vi trunk/lvzip/source/lvzip.llb/ZLIB Get Global Info.vi trunk/lvzip/source/lvzip.llb/ZLIB Go To First File.vi trunk/lvzip/source/lvzip.llb/ZLIB Go To Next File.vi trunk/lvzip/source/lvzip.llb/ZLIB Inflate.vi trunk/lvzip/source/lvzip.llb/ZLIB Initialize File Functions.vi trunk/lvzip/source/lvzip.llb/ZLIB Initialize Stream Functions.vi trunk/lvzip/source/lvzip.llb/ZLIB Locate File.vi trunk/lvzip/source/lvzip.llb/ZLIB Move Raw File.vi trunk/lvzip/source/lvzip.llb/ZLIB Open Read File.vi trunk/lvzip/source/lvzip.llb/ZLIB Open Unzip Archive.vi trunk/lvzip/source/lvzip.llb/ZLIB Open Unzip Stream.vi trunk/lvzip/source/lvzip.llb/ZLIB Open Unzip.vi trunk/lvzip/source/lvzip.llb/ZLIB Open Write File.vi trunk/lvzip/source/lvzip.llb/ZLIB Open ZIP Mode.ctl trunk/lvzip/source/lvzip.llb/ZLIB Open Zip Archive.vi trunk/lvzip/source/lvzip.llb/ZLIB Open Zip Stream.vi trunk/lvzip/source/lvzip.llb/ZLIB Open Zip.vi trunk/lvzip/source/lvzip.llb/ZLIB Path to Path String.vi trunk/lvzip/source/lvzip.llb/ZLIB Read Compressed File.vi trunk/lvzip/source/lvzip.llb/ZLIB Read Compressed Stream.vi trunk/lvzip/source/lvzip.llb/ZLIB Read Local Extra Data.vi trunk/lvzip/source/lvzip.llb/ZLIB Specific Path to Common Path.vi trunk/lvzip/source/lvzip.llb/ZLIB Store File.vi trunk/lvzip/source/lvzip.llb/ZLIB Store Stream.vi trunk/lvzip/source/lvzip.llb/ZLIB Store.vi trunk/lvzip/source/lvzip.llb/ZLIB Transfer Raw File.vi trunk/lvzip/source/lvzip.llb/ZLIB Uncompress File Info.ctl trunk/lvzip/source/lvzip.llb/ZLIB Unzip Handle.ctl trunk/lvzip/source/lvzip.llb/ZLIB Write File.vi trunk/lvzip/source/lvzip.llb/ZLIB Write Stream.vi trunk/lvzip/source/lvzip.llb/ZLIB Zip Handle.ctl trunk/lvzip/source/macbin.llb/MACBIN CCITT_CRC16.vi trunk/lvzip/source/macbin.llb/MACBIN Create Header.vi trunk/lvzip/source/macbin.llb/MACBIN Decode MacBinary.vi trunk/lvzip/source/macbin.llb/MACBIN Encode MacBinary.vi trunk/lvzip/source/macbin.llb/MACBIN Macbinary Header.ctl trunk/lvzip/source/macbin.llb/MACBIN Read Header.vi trunk/lvzip/source/macbin.llb/MACBIN Resource File Info.vi trunk/lvzip/source/macbin.llb/MACBIN Verify Header.vi trunk/lvzip/tests/lvzip-test add to empty archive.vi trunk/lvzip/tests/lvzip-test-delete files from archive.vi trunk/lvzip/tests/lvzip-test-memory stream.vi trunk/lvzip/tests/lvzip-test-sm text files.vi trunk/lvzip/tests/lvzip-test-string compress.vi Modified: trunk/lvzip/c_source/lvutil.c =================================================================== --- trunk/lvzip/c_source/lvutil.c 2015-05-03 11:21:46 UTC (rev 1518) +++ trunk/lvzip/c_source/lvutil.c 2015-05-03 15:15:55 UTC (rev 1519) @@ -32,6 +32,37 @@ #ifndef INVALID_FILE_ATTRIBUTES #define INVALID_FILE_ATTRIBUTES ((DWORD)-1) #endif + #define REPARSE_FOLDER (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_REPARSE_POINT) + typedef struct _REPARSE_DATA_BUFFER + { + ULONG ReparseTag; + USHORT ReparseDataLength; + USHORT Reserved; + union + { + struct + { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + ULONG Flags; + WCHAR PathBuffer[1]; + } SymbolicLinkReparseBuffer; + struct + { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + WCHAR PathBuffer[1]; + } MountPointReparseBuffer; + struct + { + UCHAR DataBuffer[1]; + } GenericReparseBuffer; + } DUMMYUNIONNAME; + } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; #elif Unix #include <errno.h> #include <dirent.h> @@ -307,7 +338,7 @@ } #endif -#if usesPosixPath +#if MacOSX || Unix static MgErr UnixToLVFileErr(void) { switch (errno) @@ -883,6 +914,145 @@ return err; } +LibAPI(MgErr) LVPath_CreateLink(Path path, uInt32 flags, Path target) +{ + MgErr err = mgNoErr; + LStrHandle src = NULL; + LStrHandle tgt = NULL; + + if (!FIsAbsPath(path)) + return mgArgErr; + + err = LVPath_ToText(path, &src); + if (!err) + { + err = LVPath_ToText(target, &tgt); + if (!err) + { +#if MacOSX || Unix + if (flags & kLinkHard) + { + if (link((const char*)LStrBuf(*src), (const char*)LStrBuf(*tgt))) + err = UnixToLVFileErr(); + } + else + { + if (symlink((const char*)LStrBuf(*src), (const char*)LStrBuf(*tgt))) + err = UnixToLVFileErr(); + } +#elif Win32 + if (FExists(target)) + { + FInfoRec finfo; + err = FGetInfo(target, &finfo); + if (!err && finfo.folder) + flags |= kLinkDir; + } + if (!err) + { + if (flags & kLinkHard) + { + if (flags & kLinkDir) + err = mgNotSupported; + else if (!CreateHardLinkA(LStrBuf(*src), LStrBuf(*tgt), NULL) + { + err = Win32ToLVFileErr(); + } + } + else if (!CreateSymbolicLinkA(LStrBuf(*src), LStrBuf(*tgt), flags & kLinkDir ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0)) + { + err = Win32ToLVFileErr(); + } + } +#else + err = mgNotSupported; +#endif + DSDisposeHandle((UHandle)tgt); + } + DSDisposeHandle((UHandle)src); + } + return err; +} + +LibAPI(MgErr) LVPath_ReadLink(Path path, Path *target) +{ + MgErr err = mgNoErr; + LStrHandle src = NULL; + + if (!FIsAbsPath(path)) + return mgArgErr; + + err = LVPath_ToText(path, &src); + if (!err) + { +#if MacOSX || Unix + struct stat st; + char *buf; + int len; + + if (lstat((const char*)LStrBuf(*src), &st)) + { + err = UnixToLVFileErr(); + } + else + { + len = st.st_size + 1; + buf = malloc(len); + if (!buf) + { + err = mFullErr; + } + } + + while (!err) + { + ssize_t retval = readlink((const char*)LStrBuf(*src), buf, len); + if (retval < 0) + { + err = UnixToLVFileErr(); + } + else if (retval < len) + { + + free(buf); + break; + } + len += len; + buf = realloc(buf, len); + } +#elif Win32 + if (GetFileAttributes(fpath) & REPARSE_FOLDER == REPARSE_FOLDER) + { + // Open the file correctly depending on the string type. + HANDLE handle = CreateFileA(fpath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT, 0); + + // MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384 = (16*1024) + buffer = DeviceIoControl(handle, FSCTL_GET_REPARSE_POINT, NULL, 16*1024) + // Above will return an ugly string (byte array), so we'll need to parse it. + // But first, we'll close the handle to our file so we're not locking it anymore. + CloseHandle(handle) + + // Minimum possible length (assuming that the length of the target is bigger than 0) + if len(buffer) < 9: + return None + // Parse and return our result. + result = parse_reparse_buffer(buffer) + offset = result[SYMBOLIC_LINK]['substitute_name_offset'] + ending = offset + result[SYMBOLIC_LINK]['substitute_name_length'] + rpath = result[SYMBOLIC_LINK]['buffer'][offset:ending].replace('\x00','') + if len(rpath) > 4 and rpath[0:4] == '\\??\\': + rpath = rpath[4:] + return rpath; + } +#else + err = mgNotSupported; +#endif + DSDisposeHandle((UHandle)src); + } + return err; +} + + static MgErr lvfile_CloseFile(FileRefNum ioRefNum) { MgErr err = mgNoErr; Modified: trunk/lvzip/c_source/lvutil.h =================================================================== --- trunk/lvzip/c_source/lvutil.h 2015-05-03 11:21:46 UTC (rev 1518) +++ trunk/lvzip/c_source/lvutil.h 2015-05-03 15:15:55 UTC (rev 1519) @@ -310,7 +310,7 @@ int16 h; } LVPoint; -typedef uChar Str255[256], *PStr, *CStr, *UPtr, **UHandle; +typedef uChar Str255[256], *PStr, *CStr, *UPtr, **UHandle, **PStrHandle; typedef const uChar *ConstCStr, *ConstPStr, *ConstUPtr, ConstStr255[256]; #define PStrBuf(b) (&((PStr)(b))[1]) @@ -531,14 +531,28 @@ #define kNotARefNum ((LVRefNum)0L) /* canonical invalid magic cookie */ /* LabVIEW exported functions */ +MgErr FRelPath(ConstPath start, ConstPath end, Path relPath); +MgErr FAddPath(ConstPath basePath, ConstPath relPath, Path newPath); +MgErr FAppendName(Path path, ConstPStr name); +MgErr FName(ConstPath path, PStrHandle name); +MgErr FNamePtr(ConstPath path, PStr name); +MgErr FDirName(ConstPath path, Path dir); +MgErr FVolName(ConstPath path, Path vol); +Path FMakePath(Path path, int32 type, ...); +Path FEmptyPath(Path); +Path FNotAPath(Path); Bool32 FIsAPath(Path path); +Bool32 FIsAbsPath(Path path); MgErr FPathToText(Path path, LStrPtr lstr); MgErr FPathToPath(Path *p); -MgErr FAppendName(Path path, PStr name); Bool32 FIsAPathOfType(Path path, int32 ofType); MgErr FGetPathType(Path, int32*); int32 FDepth(Path path); MgErr FDisposePath(Path p); + +#define FIsAbsPath(path) FIsAPathOfType(path, fAbsPath) +#define FIsRelPath(path) FIsAPathOfType(path, fRelPath) + MgErr FNewRefNum(Path path, File fd, LVRefNum* refnum); Bool32 FIsARefNum(LVRefNum); MgErr FDisposeRefNum(LVRefNum); @@ -588,21 +602,36 @@ FMListDetails elm[1]; } FileInfoArrRec, *FileInfoArrPtr, **FileInfoArrHdl; +#define kLinkNone 0 +#define kLinkHard 1 +#define kLinkDir 2 + /* Our exported functions */ +/**************************/ + +/* Version string of the zlib library */ LibAPI(void) DLLVersion OF((uChar* Version)); +/* Convert the path into a string representation for the current platform */ LibAPI(MgErr) LVPath_ToText(Path path, LStrHandle *str); + +/* Check if the file path points to has a resource fork */ LibAPI(MgErr) LVPath_HasResourceFork(Path path, LVBoolean *hasResFork, uInt32 *sizeLow, uInt32 *sizeHigh); + +/* List the directory contents with an additional array with flags and file type for each file in the names array */ +LibAPI(MgErr) LVPath_ListDirectory(Path dirname, LStrArrHdl *names, FileInfoArrHdl *fileInfo); + +/* Retrieve MacOS finder information from the file, unsupported on non Mac platforms */ +LibAPI(MgErr) LVPath_UtilFileInfo(Path path, uInt8 write, uInt8 *isDirectory, LVFileInfo *finderInfo, LStrHandle comment); + +/* Create and read a link */ +LibAPI(MgErr) LVPath_CreateLink(Path path, uInt32 flags, Path target); +LibAPI(MgErr) LVPath_ReadLink(Path path, Path *target); + +/* Legacy functions not supported on Mac OSX and all non-Mac platforms */ LibAPI(MgErr) LVPath_EncodeMacbinary(Path srcFileName, Path dstFileName); LibAPI(MgErr) LVPath_DecodeMacbinary(Path srcFileName, Path dstFileName); -LibAPI(MgErr) LVPath_ListDirectory(Path dirname, LStrArrHdl *names, FileInfoArrHdl *fileInfo); -LibAPI(MgErr) LVPath_UtilFileInfo(Path path, - uInt8 write, - uInt8 *isDirectory, - LVFileInfo *finderInfo, - LStrHandle comment); - typedef union { int64 q; Modified: trunk/lvzip/source/fileutil.llb/FILE Copy Fork From File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/fileutil.llb/FILE Copy Fork To File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/fileutil.llb/FILE Get Directory Content.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/fileutil.llb/FILE Open File Refnum.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/fileutil.llb/FILE Resource File Info.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/fileutil.llb/FILE Resource Header.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/fileutil.llb/FILE Size Padding.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Block Size.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB CRC32.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Close Read File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Close Unzip Archive.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Close Write File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Close Zip Archive.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Common Path to Specific Path.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Compress Directory.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Compress File Info.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Convert File Info.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Deflate.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Delete Files From Archive.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Enumerate File Contents.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Extract All Files To Dir.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Extract File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Extract Stream.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Extract.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB File Info.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB File Information.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Get Current File Info.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Get File CRC32.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Get File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Get Global Info.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Go To First File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Go To Next File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Inflate.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Initialize File Functions.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Initialize Stream Functions.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Locate File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Move Raw File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Read File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Unzip Archive.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Unzip Stream.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Unzip.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Write File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open ZIP Mode.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Zip Archive.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Zip Stream.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Open Zip.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Path to Path String.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Read Compressed File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Read Compressed Stream.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Read Local Extra Data.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Specific Path to Common Path.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Store File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Store Stream.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Store.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Transfer Raw File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Uncompress File Info.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Unzip Handle.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Write File.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Write Stream.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/lvzip.llb/ZLIB Zip Handle.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN CCITT_CRC16.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN Create Header.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN Decode MacBinary.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN Encode MacBinary.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN Macbinary Header.ctl =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN Read Header.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN Resource File Info.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/source/macbin.llb/MACBIN Verify Header.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/tests/lvzip-test add to empty archive.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/tests/lvzip-test-delete files from archive.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/tests/lvzip-test-memory stream.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/tests/lvzip-test-sm text files.vi =================================================================== (Binary files differ) Modified: trunk/lvzip/tests/lvzip-test-string compress.vi =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |