Print this page
rpcgen should only produce ANSI code

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/rpcgen/rpc_hout.c
          +++ new/usr/src/cmd/rpcgen/rpc_hout.c
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
       23 + * Copyright 2014 Garrett D'Amore <garrett@damore.org>
       24 + *
  23   25   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24   26   * Use is subject to license terms.
  25   27   */
  26   28  /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
  27   29  /* All Rights Reserved */
  28   30  /*
  29   31   * University Copyright- Copyright (c) 1982, 1986, 1988
  30   32   * The Regents of the University of California
  31   33   * All Rights Reserved
  32   34   *
↓ open down ↓ 4 lines elided ↑ open up ↑
  37   39  
  38   40  /*
  39   41   * rpc_hout.c, Header file outputter for the RPC protocol compiler
  40   42   */
  41   43  #include <stdio.h>
  42   44  #include <stdlib.h>
  43   45  #include <ctype.h>
  44   46  #include "rpc_parse.h"
  45   47  #include "rpc_util.h"
  46   48  
  47      -extern void pprocdef(proc_list *, version_list *, char *, int, int);
       49 +extern void pprocdef(proc_list *, version_list *, char *, int);
  48   50  extern void pdeclaration(char *, declaration *, int, char *);
  49   51  
  50   52  static void storexdrfuncdecl(char *, int);
  51   53  static void pconstdef(definition *);
  52   54  static void pstructdef(definition *);
  53   55  static void puniondef(definition *);
  54   56  static void pdefine(char *, char *);
  55   57  static void pprogramdef(definition *);
  56   58  static void parglist(proc_list *, char *);
  57   59  static void penumdef(definition *);
↓ open down ↓ 74 lines elided ↑ open up ↑
 132  134                  xdrfunc_tail = xdrptr;
 133  135          } else {
 134  136                  xdrfunc_tail->next = xdrptr;
 135  137                  xdrfunc_tail = xdrptr;
 136  138          }
 137  139  
 138  140  
 139  141  }
 140  142  
 141  143  void
 142      -print_xdr_func_def(char *name, int pointerp, int i)
      144 +print_xdr_func_def(char *name, int pointerp)
 143  145  {
 144      -        if (i == 2)
 145      -                f_print(fout, "extern bool_t xdr_%s();\n", name);
 146      -        else
 147      -                f_print(fout, "extern  bool_t xdr_%s(XDR *, %s%s);\n", name,
 148      -                    name, pointerp ? "*" : "");
      146 +        f_print(fout, "extern  bool_t xdr_%s(XDR *, %s%s);\n", name,
      147 +            name, pointerp ? "*" : "");
 149  148  }
 150  149  
 151  150  
 152  151  static void
 153  152  pconstdef(definition *def)
 154  153  {
 155  154          pdefine(def->def_name, def->def.co);
 156  155  }
 157  156  
 158  157  /*
↓ open down ↓ 96 lines elided ↑ open up ↑
 255  254                                  return (0);
 256  255                          if (streq(proc->proc_name, stop->proc_name))
 257  256                                  return (1);
 258  257                  }
 259  258          }
 260  259          abort();
 261  260          /* NOTREACHED */
 262  261  }
 263  262  
 264  263  static void
 265      -pfreeprocdef(char *name, char *vers, int mode)
      264 +pfreeprocdef(char *name, char *vers)
 266  265  {
 267  266          f_print(fout, "extern int ");
 268  267          pvname(name, vers);
 269      -        if (mode == 1)
 270      -                f_print(fout, "_freeresult(SVCXPRT *, xdrproc_t, caddr_t);\n");
 271      -        else
 272      -                f_print(fout, "_freeresult();\n");
      268 +        f_print(fout, "_freeresult(SVCXPRT *, xdrproc_t, caddr_t);\n");
 273  269  }
 274  270  
 275  271  static void
 276  272  pprogramdef(definition *def)
 277  273  {
 278  274          version_list *vers;
 279  275          proc_list *proc;
 280      -        int i;
 281      -        char *ext;
 282  276  
 283  277          pargdef(def);
 284  278  
 285  279          puldefine(def->def_name, def->def.pr.prog_num, PROGRAM);
 286  280          for (vers = def->def.pr.versions; vers != NULL; vers = vers->next) {
 287  281                  if (tblflag) {
 288  282                          f_print(fout,
 289  283                              "extern struct rpcgen_table %s_%s_table[];\n",
 290  284                              locase(def->def_name), vers->vers_num);
 291  285                          f_print(fout,
 292  286                              "extern int %s_%s_nproc;\n",
 293  287                              locase(def->def_name), vers->vers_num);
 294  288                  }
 295  289                  puldefine(vers->vers_name, vers->vers_num, VERSION);
 296  290  
 297      -                /*
 298      -                 * Print out 2 definitions, one for ANSI-C, another for
 299      -                 * old K & R C
 300      -                 */
 301      -
 302      -                if (!Cflag) {
 303      -                        ext = "extern  ";
 304      -                        for (proc = vers->procs; proc != NULL;
 305      -                            proc = proc->next) {
 306      -                                if (!define_printed(proc, def->def.pr.versions))
 307      -                                        puldefine(proc->proc_name,
 308      -                                            proc->proc_num, PROCEDURE);
 309      -                                f_print(fout, "%s", ext);
 310      -                                pprocdef(proc, vers, NULL, 0, 2);
 311      -
 312      -                                if (mtflag) {
 313      -                                        f_print(fout, "%s", ext);
 314      -                                        pprocdef(proc, vers, NULL, 1, 2);
 315      -                                }
      291 +                for (proc = vers->procs; proc != NULL;
      292 +                    proc = proc->next) {
      293 +                        if (!define_printed(proc,
      294 +                            def->def.pr.versions)) {
      295 +                                puldefine(proc->proc_name,
      296 +                                    proc->proc_num, PROCEDURE);
 316  297                          }
 317      -                        pfreeprocdef(def->def_name, vers->vers_num, 2);
 318      -                } else {
 319      -                        for (i = 1; i < 3; i++) {
 320      -                                if (i == 1) {
 321      -                                        f_print(fout, "\n#if defined(__STDC__)"
 322      -                                            " || defined(__cplusplus)\n");
 323      -                                        ext = "extern  ";
 324      -                                } else {
 325      -                                        f_print(fout, "\n#else /* K&R C */\n");
 326      -                                        ext = "extern  ";
 327      -                                }
 328      -
 329      -                                for (proc = vers->procs; proc != NULL;
 330      -                                    proc = proc->next) {
 331      -                                        if (!define_printed(proc,
 332      -                                            def->def.pr.versions)) {
 333      -                                                puldefine(proc->proc_name,
 334      -                                                    proc->proc_num, PROCEDURE);
 335      -                                        }
 336      -                                        f_print(fout, "%s", ext);
 337      -                                        pprocdef(proc, vers, "CLIENT *", 0, i);
 338      -                                        f_print(fout, "%s", ext);
 339      -                                        pprocdef(proc, vers,
 340      -                                            "struct svc_req *", 1, i);
 341      -                                }
 342      -                                pfreeprocdef(def->def_name, vers->vers_num, i);
 343      -                        }
 344      -                        f_print(fout, "#endif /* K&R C */\n");
      298 +                        f_print(fout, "extern  ");
      299 +                        pprocdef(proc, vers, "CLIENT *", 0);
      300 +                        f_print(fout, "extern  ");
      301 +                        pprocdef(proc, vers, "struct svc_req *", 1);
 345  302                  }
      303 +                pfreeprocdef(def->def_name, vers->vers_num);
 346  304          }
 347  305  }
 348  306  
 349  307  void
 350      -pprocdef(proc_list *proc, version_list *vp, char *addargtype, int server_p,
 351      -                                                                int mode)
      308 +pprocdef(proc_list *proc, version_list *vp, char *addargtype, int server_p)
 352  309  {
 353  310          if (mtflag) {
 354  311                  /* Print MT style stubs */
 355  312                  if (server_p)
 356  313                          f_print(fout, "bool_t ");
 357  314                  else
 358  315                          f_print(fout, "enum clnt_stat ");
 359  316          } else {
 360  317                  ptype(proc->res_prefix, proc->res_type, 1);
 361  318                  f_print(fout, "* ");
 362  319          }
 363  320          if (server_p)
 364  321                  pvname_svc(proc->proc_name, vp->vers_num);
 365  322          else
 366  323                  pvname(proc->proc_name, vp->vers_num);
 367  324  
 368      -        /*
 369      -         *  mode  1 = ANSI-C, mode 2 = K&R C
 370      -         */
 371      -        if (mode == 1)
 372      -                parglist(proc, addargtype);
 373      -        else
 374      -                f_print(fout, "();\n");
      325 +        parglist(proc, addargtype);
 375  326  }
 376  327  
 377  328  /* print out argument list of procedure */
 378  329  static void
 379  330  parglist(proc_list *proc, char *addargtype)
 380  331  {
 381  332          decl_list *dl;
 382  333          int oneway = streq(proc->res_type, "oneway");
 383  334  
 384  335          f_print(fout, "(");
↓ open down ↓ 170 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX