summary refs log tree commit diff
path: root/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/rpcgen-support-hyper-and-quad-types.patch
blob: 481cf0f3e0552af7fe7937f496636dcab1edeeb7 (plain) (blame)
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
56
57
58
59
60
61
62
63
64
65
66
diff --git a/rpcgen/rpc_parse.c b/rpcgen/rpc_parse.c
index 52edc9f..db0c1f1 100644
--- a/rpcgen/rpc_parse.c
+++ b/rpcgen/rpc_parse.c
@@ -580,6 +580,10 @@ get_type(prefixp, typep, dkind)
		*typep = "long";
		(void) peekscan(TOK_INT, &tok);
		break;
+	case TOK_HYPER:
+		*typep = "int64_t";
+		(void) peekscan(TOK_INT, &tok);
+		break;
	case TOK_VOID:
		if (dkind != DEF_UNION && dkind != DEF_PROGRAM) {
			error("voids allowed only inside union and program definitions with one argument");
@@ -592,6 +596,7 @@ get_type(prefixp, typep, dkind)
	case TOK_INT:
	case TOK_FLOAT:
	case TOK_DOUBLE:
+	case TOK_QUAD:
	case TOK_BOOL:
		*typep = tok.str;
		break;
@@ -622,6 +627,11 @@ unsigned_dec(typep)
		*typep = "u_long";
		(void) peekscan(TOK_INT, &tok);
		break;
+	case TOK_HYPER:
+		get_token(&tok);
+		*typep = "u_int64_t";
+		(void) peekscan(TOK_INT, &tok);
+		break;
	case TOK_INT:
		get_token(&tok);
		*typep = "u_int";
diff --git a/rpcgen/rpc_scan.c b/rpcgen/rpc_scan.c
index a8df441..4130107 100644
--- a/rpcgen/rpc_scan.c
+++ b/rpcgen/rpc_scan.c
@@ -419,8 +419,10 @@ static token symbols[] = {
	{TOK_UNSIGNED, "unsigned"},
	{TOK_SHORT, "short"},
	{TOK_LONG, "long"},
+	{TOK_HYPER, "hyper"},
	{TOK_FLOAT, "float"},
	{TOK_DOUBLE, "double"},
+	{TOK_QUAD, "quadruple"},
	{TOK_STRING, "string"},
	{TOK_PROGRAM, "program"},
	{TOK_VERSION, "version"},
diff --git a/rpcgen/rpc_scan.h b/rpcgen/rpc_scan.h
index bac2be4..e4c57c8 100644
--- a/rpcgen/rpc_scan.h
+++ b/rpcgen/rpc_scan.h
@@ -66,9 +66,11 @@ enum tok_kind {
	TOK_INT,
	TOK_SHORT,
	TOK_LONG,
+	TOK_HYPER,
	TOK_UNSIGNED,
	TOK_FLOAT,
	TOK_DOUBLE,
+	TOK_QUAD,
	TOK_OPAQUE,
	TOK_CHAR,
	TOK_STRING,