summaryrefslogtreecommitdiff
path: root/source3/torture/t_push_ucs2.c
blob: b9bf87ba5460f9a0e832b5e98ffeaea42581d014 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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;
}