⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stafziputil.cpp

📁 Software Testing Automation Framework (STAF)的开发代码
💻 CPP
字号:
/*****************************************************************************/
/* Software Testing Automation Framework (STAF)                              */
/* (C) Copyright IBM Corp. 2004                                              */
/*                                                                           */
/* This software is licensed under the Common Public License (CPL) V1.0.     */
/*****************************************************************************/

#include "STAF.h"
#include "STAFString.h"
#include "STAFTrace.h"

#include "zlib.h"

#include <time.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <vector>
#include <map>
#include <direct.h>
#include <io.h>

#include "STAFZip.h"
#include "STAFZipFileAttribute.h"
#include "STAFZipCentralDirExtension.h"
#include "STAFZipUtil.h"


// change_file_date : change the date/time of a file
// filename : the filename of the file where date/time must be modified
// dosdate : the new date at the MSDos format (4 bytes)
// tmu_date : the SAME new date at the tm_unz format
void STAFZipUtil::changeFileDate(const char *filename, uLong dosdate, tm
tmu_date)
{

/*
    STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::changeFileDate_CP1")
                     + " filename ["
                     + filename
                     + "] dosdate ["
                     + dosdate
                     + "]");
*/

    HANDLE hFile;
    FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite;

    hFile = CreateFile(filename,GENERIC_READ | GENERIC_WRITE,
                      0,NULL,OPEN_EXISTING,0,NULL);
    GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite);
    DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal);
    LocalFileTimeToFileTime(&ftLocal,&ftm);
    SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
    CloseHandle(hFile);
}


// make a directory
STAFRC_t STAFZipUtil::myMkDir(const char *dirname)
{
/*
    STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::myMkDir1_CP1")
                     + " dirname ["
                     + dirname
                     + "]");
*/

    int ret = 0;

    ret = mkdir(dirname);

    if (ret != 0)
    {
        STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::myMkDir1_CP2")
                     + " ret ["
                     + ret
                     + "]");

        return kZIPErrorCreatingDir;
    }

    return kSTAFOk;
}


// create a directory and set permission
STAFRC_t STAFZipUtil::myMkDir(const char *dirname, void *cde,
                              const char *outputdir)
{
/*
    STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::myMkDir2_CP1")
                     + " dirname ["
                     + dirname
                     + "] outputdir ["
                     + outputdir
                     + "]");
*/

    STAFRC_t rc = kSTAFOk;

    int ret = 0;

    ret = mkdir(dirname);

    if (ret != 0)
    {
        STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::myMkDir2_CP2")
                     + " ret ["
                     + ret
                     + "]");

        return kZIPErrorCreatingDir;
    }


/*
    STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::myMkDir2_CP5")
                     + " rc ["
                     + rc
                     + "]");
*/

    return rc;
}


// change file size
STAFRC_t STAFZipUtil::changeFileSize(const char *zipfilename, long newsize)
{
/*
    STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::changeFileSize_CP1")
                     + " zipfilename ["
                     + zipfilename
                     + "] newsize ["
                     + newsize
                     + "]");
*/

    int fd = _open( zipfilename, _O_RDWR );

    int err = _chsize(fd, newsize);

    _close(fd);


    if (err != 0)
    {
        STAFTrace::trace(kSTAFTraceServiceResult,
                     STAFString("STAFZipUtil::changeFileSize_CP2")
                     + " err ["
                     + err
                     + "]");

        return kZIPChangeFileSizeError;
    }

    return kSTAFOk;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -