⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen_rpc.awk

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 AWK
📖 第 1 页 / 共 3 页
字号:
			printf("\topaque %sdata<>;\n", args[i]) >> XFILE		}	}	printf("};\n") >> XFILE	printf("\n") >> XFILE	#	# Generate the reply message	#	printf("struct __%s_reply {\n", name) >> XFILE	printf("\tint status;\n") >> XFILE	for (i = 0; i < rvars; ++i) {		if (ret_type[i] == "ID") {			printf("\tunsigned int %scl_id;\n", retargs[i]) >> XFILE		}		if (ret_type[i] == "STRING") {			printf("\tstring %s<>;\n", retargs[i]) >> XFILE		}		if (ret_type[i] == "INT") {			printf("\tunsigned int %s;\n", retargs[i]) >> XFILE		}		if (ret_type[i] == "DBL") {			printf("\tdouble %s;\n", retargs[i]) >> XFILE		}		if (ret_type[i] == "DBT") {			printf("\topaque %sdata<>;\n", retargs[i]) >> XFILE		}		if (ret_type[i] == "LIST") {			if (retlist_type[i] == "GID") {				printf("\topaque %s<>;\n", retargs[i]) >> XFILE			} else {				printf("\tunsigned int %s<>;\n", retargs[i]) >> XFILE			}		}	}	printf("};\n") >> XFILE	endlist[nendlist] = \	    sprintf("__%s_reply __DB_%s(__%s_msg) = %d", \		name, name, name, nendlist);	nendlist++;	#	# =====================================================	# Server functions.	#	# First spit out PUBLIC prototypes for server functions.	#	p[1] = sprintf("__%s_reply *__db_%s_%d%03d __P((__%s_msg *, struct svc_req *));",	    name, name, major, minor, name);	p[2] = "";	proto_format(p, 0, SFILE);	printf("__%s_reply *\n", name) >> SFILE	printf("__db_%s_%d%03d(msg, req)\n", name, major, minor) >> SFILE	printf("\t__%s_msg *msg;\n", name) >> SFILE;	printf("\tstruct svc_req *req;\n", name) >> SFILE;	printf("{\n") >> SFILE	printf("\tstatic __%s_reply reply; /* must be static */\n", \	    name) >> SFILE	if (xdr_free) {		printf("\tstatic int __%s_free = 0; /* must be static */\n\n", \		    name) >> SFILE	}	printf("\tCOMPQUIET(req, NULL);\n", name) >> SFILE	if (xdr_free) {		printf("\tif (__%s_free)\n", name) >> SFILE		printf("\t\txdr_free((xdrproc_t)xdr___%s_reply, (void *)&reply);\n", \		    name) >> SFILE		printf("\t__%s_free = 0;\n", name) >> SFILE		printf("\n\t/* Reinitialize allocated fields */\n") >> SFILE		for (i = 0; i < rvars; ++i) {			if (ret_type[i] == "LIST") {				printf("\treply.%s.%s_val = NULL;\n", \				    retargs[i], retargs[i]) >> SFILE			}			if (ret_type[i] == "DBT") {				printf("\treply.%sdata.%sdata_val = NULL;\n", \				    retargs[i], retargs[i]) >> SFILE			}		}	}	need_out = 0;	#	# Compose server proc to call.  Decompose message components as args.	#	printf("\n\t__%s_proc(", name) >> SFILE	sep = "";	for (i = 0; i < nvars; ++i) {		if (rpc_type[i] == "IGNORE") {			continue;		}		if (rpc_type[i] == "ID") {			printf("%smsg->%scl_id", sep, args[i]) >> SFILE		}		if (rpc_type[i] == "STRING") {			printf("%s(*msg->%s == '\\0') ? NULL : msg->%s", \			    sep, args[i], args[i]) >> SFILE		}		if (rpc_type[i] == "GID") {			printf("%smsg->%s", sep, args[i]) >> SFILE		}		if (rpc_type[i] == "INT") {			printf("%smsg->%s", sep, args[i]) >> SFILE		}		if (rpc_type[i] == "LIST") {			printf("%smsg->%s.%s_val", \			    sep, args[i], args[i]) >> SFILE			printf("%smsg->%s.%s_len", \			    sep, args[i], args[i]) >> SFILE		}		if (rpc_type[i] == "DBT") {			printf("%smsg->%sdlen", sep, args[i]) >> SFILE			sep = ",\n\t    ";			printf("%smsg->%sdoff", sep, args[i]) >> SFILE			printf("%smsg->%sulen", sep, args[i]) >> SFILE			printf("%smsg->%sflags", sep, args[i]) >> SFILE			printf("%smsg->%sdata.%sdata_val", \			    sep, args[i], args[i]) >> SFILE			printf("%smsg->%sdata.%sdata_len", \			    sep, args[i], args[i]) >> SFILE		}		sep = ",\n\t    ";	}	printf("%s&reply", sep) >> SFILE	if (xdr_free)		printf("%s&__%s_free);\n", sep, name) >> SFILE	else		printf(");\n\n") >> SFILE	if (need_out) {		printf("\nout:\n") >> SFILE	}	printf("\treturn (&reply);\n") >> SFILE	printf("}\n\n") >> SFILE	#	# =====================================================	# Generate Procedure Template Server code	#	# Produce SED file commands if needed at the same time	#	# Spit out comment, prototype, function name and arg list.	#	printf("/^\\/\\* BEGIN __%s_proc/,/^\\/\\* END __%s_proc/c\\\n", \	    name, name) >> SEDFILE	printf("/* BEGIN __%s_proc */\n", name) >> PFILE	printf("/* BEGIN __%s_proc */\\\n", name) >> SEDFILE	pi = 1;	p[pi++] = sprintf("void __%s_proc __P((", name);	p[pi++] = "";	for (i = 0; i < nvars; ++i) {		if (rpc_type[i] == "IGNORE")			continue;		if (rpc_type[i] == "ID") {			p[pi++] = "long";			p[pi++] = ", ";		}		if (rpc_type[i] == "STRING") {			p[pi++] = "char *";			p[pi++] = ", ";		}		if (rpc_type[i] == "GID") {			p[pi++] = "u_int8_t *";			p[pi++] = ", ";		}		if (rpc_type[i] == "INT") {			p[pi++] = "u_int32_t";			p[pi++] = ", ";		}		if (rpc_type[i] == "LIST" && list_type[i] == "GID") {			p[pi++] = "u_int8_t *";			p[pi++] = ", ";			p[pi++] = "u_int32_t";			p[pi++] = ", ";		}		if (rpc_type[i] == "LIST" && list_type[i] == "INT") {			p[pi++] = "u_int32_t *";			p[pi++] = ", ";			p[pi++] = "u_int32_t";			p[pi++] = ", ";		}		if (rpc_type[i] == "LIST" && list_type[i] == "ID") {			p[pi++] = "u_int32_t *";			p[pi++] = ", ";			p[pi++] = "u_int32_t";			p[pi++] = ", ";		}		if (rpc_type[i] == "DBT") {			p[pi++] = "u_int32_t";			p[pi++] = ", ";			p[pi++] = "u_int32_t";			p[pi++] = ", ";			p[pi++] = "u_int32_t";			p[pi++] = ", ";			p[pi++] = "u_int32_t";			p[pi++] = ", ";			p[pi++] = "void *";			p[pi++] = ", ";			p[pi++] = "u_int32_t";			p[pi++] = ", ";		}	}	p[pi++] = sprintf("__%s_reply *", name);	if (xdr_free) {		p[pi++] = ", ";		p[pi++] = "int *));";	} else {		p[pi++] = "";		p[pi++] = "));";	}	p[pi++] = "";	proto_format(p, 1, SEDFILE);	printf("void\n") >> PFILE	printf("void\\\n") >> SEDFILE	printf("__%s_proc(", name) >> PFILE	printf("__%s_proc(", name) >> SEDFILE	sep = "";	argcount = 0;	for (i = 0; i < nvars; ++i) {		argcount++;		split_lines();		if (argcount == 0) {			sep = "";		}		if (rpc_type[i] == "IGNORE")			continue;		if (rpc_type[i] == "ID") {			printf("%s%scl_id", sep, args[i]) >> PFILE			printf("%s%scl_id", sep, args[i]) >> SEDFILE		}		if (rpc_type[i] == "STRING") {			printf("%s%s", sep, args[i]) >> PFILE			printf("%s%s", sep, args[i]) >> SEDFILE		}		if (rpc_type[i] == "GID") {			printf("%s%s", sep, args[i]) >> PFILE			printf("%s%s", sep, args[i]) >> SEDFILE		}		if (rpc_type[i] == "INT") {			printf("%s%s", sep, args[i]) >> PFILE			printf("%s%s", sep, args[i]) >> SEDFILE		}		if (rpc_type[i] == "LIST") {			printf("%s%s", sep, args[i]) >> PFILE			printf("%s%s", sep, args[i]) >> SEDFILE			argcount++;			split_lines();			if (argcount == 0) {				sep = "";			} else {				sep = ", ";			}			printf("%s%slen", sep, args[i]) >> PFILE			printf("%s%slen", sep, args[i]) >> SEDFILE		}		if (rpc_type[i] == "DBT") {			printf("%s%sdlen", sep, args[i]) >> PFILE			printf("%s%sdlen", sep, args[i]) >> SEDFILE			sep = ", ";			argcount++;			split_lines();			if (argcount == 0) {				sep = "";			} else {				sep = ", ";			}			printf("%s%sdoff", sep, args[i]) >> PFILE			printf("%s%sdoff", sep, args[i]) >> SEDFILE			argcount++;			split_lines();			if (argcount == 0) {				sep = "";			} else {				sep = ", ";			}			printf("%s%sulen", sep, args[i]) >> PFILE			printf("%s%sulen", sep, args[i]) >> SEDFILE			argcount++;			split_lines();			if (argcount == 0) {				sep = "";			} else {				sep = ", ";			}			printf("%s%sflags", sep, args[i]) >> PFILE			printf("%s%sflags", sep, args[i]) >> SEDFILE			argcount++;			split_lines();			if (argcount == 0) {				sep = "";			} else {				sep = ", ";			}			printf("%s%sdata", sep, args[i]) >> PFILE			printf("%s%sdata", sep, args[i]) >> SEDFILE			argcount++;			split_lines();			if (argcount == 0) {				sep = "";			} else {				sep = ", ";			}			printf("%s%ssize", sep, args[i]) >> PFILE			printf("%s%ssize", sep, args[i]) >> SEDFILE		}		sep = ", ";	}	printf("%sreplyp",sep) >> PFILE	printf("%sreplyp",sep) >> SEDFILE	if (xdr_free) {		printf("%sfreep)\n",sep) >> PFILE		printf("%sfreep)\\\n",sep) >> SEDFILE	} else {		printf(")\n") >> PFILE		printf(")\\\n") >> SEDFILE	}	#	# Spit out arg types/names;	#	for (i = 0; i < nvars; ++i) {		if (rpc_type[i] == "ID") {			printf("\tlong %scl_id;\n", args[i]) >> PFILE			printf("\\\tlong %scl_id;\\\n", args[i]) >> SEDFILE		}		if (rpc_type[i] == "STRING") {			printf("\tchar *%s;\n", args[i]) >> PFILE			printf("\\\tchar *%s;\\\n", args[i]) >> SEDFILE		}		if (rpc_type[i] == "GID") {			printf("\tu_int8_t *%s;\n", args[i]) >> PFILE			printf("\\\tu_int8_t *%s;\\\n", args[i]) >> SEDFILE		}		if (rpc_type[i] == "INT") {			printf("\tu_int32_t %s;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %s;\\\n", args[i]) >> SEDFILE		}		if (rpc_type[i] == "LIST" && list_type[i] == "GID") {			printf("\tu_int8_t * %s;\n", args[i]) >> PFILE			printf("\\\tu_int8_t * %s;\\\n", args[i]) >> SEDFILE		}		if (rpc_type[i] == "LIST" && list_type[i] == "INT") {			printf("\tu_int32_t * %s;\n", args[i]) >> PFILE			printf("\\\tu_int32_t * %s;\\\n", \			    args[i]) >> SEDFILE			printf("\tu_int32_t %ssize;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %ssize;\\\n", args[i]) >> SEDFILE		}		if (rpc_type[i] == "LIST" && list_type[i] == "ID") {			printf("\tu_int32_t * %s;\n", args[i]) >> PFILE			printf("\\\tu_int32_t * %s;\\\n", args[i]) \			    >> SEDFILE		}		if (rpc_type[i] == "LIST") {			printf("\tu_int32_t %slen;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %slen;\\\n", args[i]) \			    >> SEDFILE		}		if (rpc_type[i] == "DBT") {			printf("\tu_int32_t %sdlen;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %sdlen;\\\n", args[i]) >> SEDFILE			printf("\tu_int32_t %sdoff;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %sdoff;\\\n", args[i]) >> SEDFILE			printf("\tu_int32_t %sulen;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %sulen;\\\n", args[i]) >> SEDFILE			printf("\tu_int32_t %sflags;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %sflags;\\\n", args[i]) >> SEDFILE			printf("\tvoid *%sdata;\n", args[i]) >> PFILE			printf("\\\tvoid *%sdata;\\\n", args[i]) >> SEDFILE			printf("\tu_int32_t %ssize;\n", args[i]) >> PFILE			printf("\\\tu_int32_t %ssize;\\\n", args[i]) >> SEDFILE		}	}	printf("\t__%s_reply *replyp;\n",name) >> PFILE	printf("\\\t__%s_reply *replyp;\\\n",name) >> SEDFILE	if (xdr_free) {		printf("\tint * freep;\n") >> PFILE		printf("\\\tint * freep;\\\n") >> SEDFILE	}	printf("/* END __%s_proc */\n", name) >> PFILE	printf("/* END __%s_proc */\n", name) >> SEDFILE	#	# Function body	#	printf("{\n") >> PFILE	printf("\tint ret;\n") >> PFILE	for (i = 0; i < nvars; ++i) {		if (rpc_type[i] == "ID") {			printf("\t%s %s;\n", c_type[i], args[i]) >> PFILE			printf("\tct_entry *%s_ctp;\n", args[i]) >> PFILE		}	}	printf("\n") >> PFILE	for (i = 0; i < nvars; ++i) {		if (rpc_type[i] == "ID") {			printf("\tACTIVATE_CTP(%s_ctp, %scl_id, %s);\n", \			    args[i], args[i], ctp_type[i]) >> PFILE			printf("\t%s = (%s)%s_ctp->ct_anyp;\n", \			    args[i], c_type[i], args[i]) >> PFILE		}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -