rewrite parse_cmd to simplify later extension
authorMalte S. Stretz <mss@apache.org>
Tue, 5 Jul 2011 18:57:06 +0000 (20:57 +0200)
committerMalte S. Stretz <mss@apache.org>
Tue, 5 Jul 2011 19:00:06 +0000 (21:00 +0200)
commit1ded36ff7af601cdc2f8e12ea6fe87c70d153707
tree6c5a1d46e0dabd11127fc2605f0504a991857bcc
parent82212263c804f3c8288e30650af5a7a20434af26
rewrite parse_cmd to simplify later extension

The following code was used to test this:
  void test(const char *str, const char *ip) {
    char buf[16+2];
    ssize_t n;
    memset(buf, '.', sizeof(buf));
    buf[sizeof(buf)-1] = 0;
    printf("%*s -> %*s -> ", 6, ip, 20, str);
    n = parse_cmd(buf, sizeof(buf), str, ip);
    printf("%+03d -> %s\n", n, buf);
  }
  int main(void) {
    test("12345", NULL);
    test("123456789abcdef", NULL);
    test("foo%%bar", NULL);
    test("123456789abcdefXXXXX", NULL);
    test("--------------%%%%%%", NULL);
    test("foo%xx%z", NULL);
    test("foo%xxyz", NULL);
    test("ip ->%IP%<-", "here");
    test("ip ------->%IP%<-", "here");
    test("ip -------->%IP%<-", "here");
    return 0;
  }

These were the results:
  (null) ->                12345 -> +05 -> 12345
  (null) ->      123456789abcdef -> +15 -> 123456789abcdef
  (null) ->             foo%%bar -> -01 -> foo
  (null) -> 123456789abcdefXXXXX -> +20 -> 123456789abcdefXX
  (null) -> --------------%%%%%% -> -01 -> --------------
  (null) ->             foo%xx%z -> -01 -> foo
  (null) ->             foo%xxyz -> -01 -> foo
    here ->          ip ->%IP%<- -> +11 -> ip ->here<-
    here ->    ip ------->%IP%<- -> +17 -> ip ------->here<-
    here ->   ip -------->%IP%<- -> +18 -> ip -------->here<
src/knockd.c