Exemplo n.º 1
0
void getParams(unsigned argc, char * const * argv, KeyDiffParams & params)
{
    unsigned arg = 1;
    while((arg<argc) && (*argv[arg] == '-'))
    {
        if((strcmp(argv[arg], "-o") == 0) || (strcmp(argv[arg], "--overwrite") == 0))
            params.overwrite = true;
        else if((strcmp(argv[arg], "-n") == 0) || (strcmp(argv[arg], "--nooverwrite") == 0))
            params.overwrite = false;
        else if(strcmp(argv[arg], "-z") == 0)
            params.compress = COMPRESS_METHOD_LZW;
        else if((strcmp(argv[arg], "-c") == 0) || (strcmp(argv[arg], "--compress") == 0))
            params.compress = COMPRESS_METHOD_LZMA;
        else if((strcmp(argv[arg], "-s") == 0) || (strcmp(argv[arg], "--stats") == 0))
            params.stats = true;
        else if((strcmp(argv[arg], "-t") == 0) || (strcmp(argv[arg], "--tlk") == 0))
        {
            if((argc-arg)<=1) usage(false);
            params.tlkInfo = true;
            params.newTLK.append(argv[++arg]);
        }
        else if((strcmp(argv[arg], "-p") == 0) || (strcmp(argv[arg], "--progress") == 0))
        {
            if((argc-arg)<=1) usage(false);
            ++arg;
            offset_t freq = atoi64_l(argv[arg], strlen(argv[arg]));
            if(freq <= 0) usage(false);
            params.progressFrequency = freq;
        }
        else if((strcmp(argv[arg], "-v") == 0) || (strcmp(argv[arg], "--version") == 0))
            version(false);
        else if((strcmp(argv[arg], "-h") == 0) || (strcmp(argv[arg], "-?") == 0) || (strcmp(argv[arg], "--help") == 0))
            version(true);
        else
            usage(false);
        arg++;
    }
    if(argc != arg+3)
        usage(false);
    params.oldIndex.append(argv[arg++]);
    params.newIndex.append(argv[arg++]);
    params.patch.append(argv[arg++]);
}
Exemplo n.º 2
0
inline __int64 atoi64(const char* s) { return atoi64_l(s, (int)strlen(s)); }
Exemplo n.º 3
0
void getParams(unsigned argc, char * const * argv, KeyPatchParams & params)
{
    unsigned arg = 1;
    while((arg<argc) && (*argv[arg] == '-'))
    {
        if((strcmp(argv[arg], "-o") == 0) || (strcmp(argv[arg], "--overwrite") == 0))
            params.overwrite = true;
        else if((strcmp(argv[arg], "-n") == 0) || (strcmp(argv[arg], "--nooverwrite") == 0))
            params.overwrite = false;
        else if((strcmp(argv[arg], "-i") == 0) || (strcmp(argv[arg], "--info") == 0))
            params.mode = KEYPATCH_info;
        else if((strcmp(argv[arg], "-t") == 0) || (strcmp(argv[arg], "--transmit") == 0))
        {
            if((argc-arg)<=2) usage(false);
            params.xmitTLK = true;
            params.tlkPort = atoi(argv[++arg]);
            params.xmitEp.set(argv[++arg]);
            if(params.tlkPort == 0)
                throw MakeStringException(0, "Bad local port on TLK transmit");
            if(params.xmitEp.port == 0)
                throw MakeStringException(0, "Bad remote ip:port on TLK transmit");
        }
        else if((strcmp(argv[arg], "-r") == 0) || (strcmp(argv[arg], "--receive") == 0))
        {
            if((argc-arg)<=2) usage(false);
            params.recvTLK = true;
            params.tlkPort = atoi(argv[++arg]);
            params.recvNum = atoi(argv[++arg]);
            if(params.tlkPort == 0)
                throw MakeStringException(0, "Bad local port on TLK receive");
            if(params.recvNum == 0)
                throw MakeStringException(0, "Bad number of parts on TLK receive");
        }
        else if((strcmp(argv[arg], "-s") == 0) || (stricmp(argv[arg], "--skiptlk") == 0))
            params.ignoreTLK = true;
        else if((strcmp(argv[arg], "-p") == 0) || (strcmp(argv[arg], "--progress") == 0))
        {
            if((argc-arg)<=1) usage(false);
            ++arg;
            offset_t freq = atoi64_l(argv[arg], strlen(argv[arg]));
            if(freq <= 0) usage(false);
            params.progressFrequency = freq;
        }
        else if((strcmp(argv[arg], "-v") == 0) || (strcmp(argv[arg], "--version") == 0))
            version(false);
        else if((strcmp(argv[arg], "-h") == 0) || (strcmp(argv[arg], "-?") == 0) || (strcmp(argv[arg], "--help") == 0))
            version(true);
        else
            usage(false);
        arg++;
    }
    if((params.mode == KEYPATCH_info) && (params.xmitTLK || params.recvTLK))
        throw MakeStringException(0, "Cannot specify info option with TLK transmit or receive");
    if(params.xmitTLK && params.recvTLK)
        throw MakeStringException(0, "Cannot specify both TLK transmit and receive");
    unsigned argsRqd = (params.recvTLK ? 4 : 3);
    if((argc == arg+argsRqd) && (params.mode == KEYPATCH_implicit))
    {
        params.patch.append(argv[arg++]);
        params.oldIndex.append(argv[arg++]);
        params.newIndex.append(argv[arg++]);
        if(params.recvTLK)
            params.newTLK.append(argv[arg++]);
        params.mode = KEYPATCH_explicit;
    }
    else if(argc == arg+1)
    {
        params.patch.append(argv[arg++]);
    }
    else
    {
        usage(false);
    }
}