source: trunk/third/rpm/db/dist/s_rpc @ 19079

Revision 19079, 3.8 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r19078, which included commits to RCS files with non-trunk default branches.
Line 
1#!/bin/sh -
2#       Id: s_rpc,v 11.18 2002/08/15 15:22:09 bostic Exp
3#
4# Build the automatically generated RPC files
5
6echo "Building RPC client/server files"
7
8. ./RELEASE
9
10t=/tmp/__db_a
11trap 'rm -f $t ; exit 0' 0
12trap 'rm -f $t ; exit 1' 1 2 3 13 15
13
14client_file=../rpc_client/gen_client.c
15ctmpl_file=./template/gen_client_ret
16dbinc_file=../dbinc/db.in
17defs_file=../dbinc_auto/rpc_defs.in
18header_file=../dbinc_auto/db_server.h
19proc_file=../rpc_server/c/db_server_proc.c
20rpcclnt_file=../rpc_client/db_server_clnt.c
21rpcsvc_file=../rpc_server/c/db_server_svc.c
22rpcxdr_file=../rpc_server/c/db_server_xdr.c
23sed_file=../rpc_server/c/db_server_proc.sed
24server_file=../rpc_server/c/gen_db_server.c
25stmpl_file=./template/db_server_proc
26xdr_file=../rpc_server/db_server.x
27
28#
29# NOTE: We do NOT want to remove proc_file.  It is what we apply $sed_file
30# to, but we do not want to remove it, it does not get built in place.
31rm -f   $client_file \
32        $ctmpl_file \
33        $header_file \
34        $rpcclnt_file \
35        $rpcsvc_file \
36        $rpcxdr_file \
37        $sed_file \
38        $server_file \
39        $stmpl_file \
40        $xdr_file
41
42#
43# Generate client/server/XDR code
44#
45xidsize=\
46`awk '/^#define/ { if ($2 == "DB_XIDDATASIZE") { print $3 }}' $dbinc_file`
47
48awk -f gen_rpc.awk \
49    -v major=$DB_VERSION_MAJOR \
50    -v minor=$DB_VERSION_MINOR \
51    -v xidsize=$xidsize \
52    -v client_file=$client_file \
53    -v ctmpl_file=$ctmpl_file \
54    -v sed_file=$sed_file \
55    -v server_file=$server_file \
56    -v stmpl_file=$stmpl_file \
57    -v xdr_file=$xdr_file < ../rpc_server/rpc.src
58chmod 444 $client_file $server_file
59
60#
61# Now run rpcgen to generate all our sources from the XDR file
62#
63rpcgen -h $xdr_file > $header_file
64rpcgen -l $xdr_file > $rpcclnt_file
65rpcgen -s tcp $xdr_file > $rpcsvc_file
66rpcgen -c $xdr_file > $rpcxdr_file
67
68#
69# Run various server files through sed.
70#
71cat <<ENDOFSEDTEXT>$t
72s/^#include[     ]"db_server.h"/#include "db_config.h"\\
73\\
74\\#ifndef NO_SYSTEM_INCLUDES\\
75\\#include <rpc\\/rpc.h>\\
76\\#include <rpc\\/pmap_clnt.h>/
77/^#include <netinet.in.h>/a\\
78\\#endif\\
79\\
80\\#include "db_int.h"\\
81\\#include "dbinc_auto/db_server.h"\\
82\\#include "dbinc/db_server_int.h"\\
83\\#include "dbinc_auto/rpc_server_ext.h"
84/^      return;/i\\
85\\      __dbsrv_timeout(0);
86s/svc_sendreply(transp, xdr_void,/svc_sendreply(transp, (xdrproc_t)xdr_void,/
87s/svc_getargs(transp, xdr_argument, &argument)/svc_getargs(transp, (xdrproc_t)xdr_argument, (char *)\&argument)/
88s/svc_sendreply(transp, xdr_result, result)/svc_sendreply(transp, (xdrproc_t)xdr_result, result)/
89s/svc_freeargs(transp, xdr_argument, &argument)/svc_freeargs(transp, (xdrproc_t)xdr_argument, (char *)\&argument)/
90s/^main/void __dbsrv_main/
91ENDOFSEDTEXT
92sed -f $t $rpcsvc_file > ${rpcsvc_file}.new
93mv ${rpcsvc_file}.new $rpcsvc_file
94
95sed -f $sed_file $proc_file > ${proc_file}.new
96mv ${proc_file}.new $proc_file
97
98# Run rpcgen files through sed to add HAVE_RPC ifdef and appropriate
99# includes.
100cat <<ENDOFSEDTEXT>$t
1011i\\
102\\#include "db_config.h"\\
103\\
104\\#ifdef HAVE_RPC
105/^#include "db_server.h"/c\\
106\\#ifndef NO_SYSTEM_INCLUDES\\
107\\#include <rpc/rpc.h>\\
108\\
109\\#include <strings.h>\\
110\\#endif\\
111\\
112\\#include "db_int.h"\\
113\\#include "dbinc_auto/db_server.h"
114\$a\\
115\\#endif /* HAVE_RPC */
116ENDOFSEDTEXT
117
118sed -f $t $rpcxdr_file > ${rpcxdr_file}.new
119mv ${rpcxdr_file}.new $rpcxdr_file
120sed -f $t $rpcclnt_file > ${rpcclnt_file}.new
121mv ${rpcclnt_file}.new $rpcclnt_file
122
123# Copy the DB_RPC SERVER #defines into a separate file so
124# they can be part of db.h.
125msgc="/* DO NOT EDIT: automatically built by dist/s_rpc. */"
126(echo  "" && echo "$msgc" &&
127    sed -n -e "/DB_RPC_SERVER/p" $header_file) > $defs_file
128
129# Fix up the header file:
130#       Remove the DB_RPC_SERVER #defines.
131#       Remove the <rpc/rpc.h> include, it needs to be included earlier
132#       than that.
133sed -e "/DB_RPC_SERVER/d"\
134    -e "/^#include.*<rpc\/rpc.h>/d" $header_file > ${header_file}.new
135mv ${header_file}.new $header_file
136
137chmod 444 $header_file $rpcclnt_file $rpcsvc_file $rpcxdr_file
Note: See TracBrowser for help on using the repository browser.