diff options
Diffstat (limited to 'source3/torture/t_push_ucs2.c')
-rw-r--r-- | source3/torture/t_push_ucs2.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/source3/torture/t_push_ucs2.c b/source3/torture/t_push_ucs2.c new file mode 100644 index 0000000000..b9bf87ba54 --- /dev/null +++ b/source3/torture/t_push_ucs2.c @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2003 by Martin Pool + * Copyright (C) 2003 by Andrew Bartlett + * + * Test harness for push_ucs2 + */ + +#include "includes.h" + +static int check_push_ucs2(const char *orig) +{ + smb_ucs2_t *dest = NULL; + char *orig2 = NULL; + int ret; + size_t converted_size; + + push_ucs2_allocate(&dest, orig, &converted_size); + pull_ucs2_allocate(&orig2, dest, &converted_size); + ret = strcmp(orig, orig2); + if (ret) { + fprintf(stderr, "orig: %s\n", orig); + fprintf(stderr, "orig (UNIX -> UCS2 -> UNIX): %s\n", orig2); + } + + SAFE_FREE(dest); + SAFE_FREE(orig2); + + return ret; +} + +int main(int argc, char *argv[]) +{ + int i, ret = 0; + int count = 1; + + /* Needed to initialize character set */ + lp_load("/dev/null", True, False, False, True); + + if (argc < 2) { + fprintf(stderr, "usage: %s STRING1 [COUNT]\n" + "Checks that a string translated UNIX->UCS2->UNIX is unchanged\n" + "Should be always 0\n", + argv[0]); + return 2; + } + if (argc >= 3) + count = atoi(argv[2]); + + for (i = 0; ((i < count) && (!ret)); i++) + ret = check_push_ucs2(argv[1]); + + printf("%d\n", ret); + + return 0; +} |