* Mountain View, California 94043
*/
-#ifndef lint
+#if 0
static char sccsid[] = "@(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI";
#endif
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
+#include <errno.h>
#include "rpc_parse.h"
#include "rpc_util.h"
#include "rpc_scan.h"
static void open_output(char *infile, char *outfile);
static void add_warning(void);
static void clear_args(void);
-static void find_cpp(void);
static void open_input(char *infile, char *define);
static int check_nettype(char *name, char **list_to_check);
static void c_output(char *infile, char *define, int extend, char *outfile);
argcount = FIXEDARGS;
}
-/* make sure that a CPP exists */
-static void
-find_cpp(void)
-{
- struct stat buf;
-
- if (stat(CPP, &buf) < 0) { /* SVR4 or explicit cpp does not exist */
- if (cppDefined) {
- fprintf(stderr, "cannot find C preprocessor: %s \n", CPP);
- crash();
- } else { /* try the other one */
- CPP = SUNOS_CPP;
- if (stat(CPP, &buf) < 0) { /* can't find any cpp */
- fprintf(stderr, "cannot find any C preprocessor (cpp)\n");
- crash();
- }
- }
- }
-}
-
/*
* Open input file with given define for C-preprocessor
*/
(void) pipe(pd);
switch (fork()) {
case 0:
- find_cpp();
- putarg(0, CPP);
+ putarg(0, "cpp");
putarg(1, CPPFLAGS);
addarg(define);
addarg(infile);
(void) close(1);
(void) dup2(pd[1], 1);
(void) close(pd[0]);
- execv(arglist[0], arglist);
+ if (cppDefined)
+ execv(CPP, arglist);
+ else {
+ execvp("cpp", arglist);
+ if (errno == ENOENT)
+ execvp(SVR4_CPP, arglist);
+ if (errno == ENOENT)
+ execvp(SUNOS_CPP, arglist);
+ }
perror("execv");
exit(1);
case -1:
/* add all the starting basic types */
add_type(1,"int");
- add_type(1,"long");
+ add_type(1,"int32_t");
add_type(1,"short");
add_type(1,"bool");
add_type(1,"u_int");
- add_type(1,"u_long");
+ add_type(1,"u_int32_t");
add_type(1,"u_short");
}
f_print(fout, "#include <rpc/rpc.h>\n\n");
+ f_print(fout, "#ifndef IXDR_GET_INT32\n");
+ f_print(fout, "#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf))\n");
+ f_print(fout, "#endif\n");
+ f_print(fout, "#ifndef IXDR_PUT_INT32\n");
+ f_print(fout, "#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v))\n");
+ f_print(fout, "#endif\n");
+ f_print(fout, "#ifndef IXDR_GET_U_INT32\n");
+ f_print(fout, "#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf))\n");
+ f_print(fout, "#endif\n");
+ f_print(fout, "#ifndef IXDR_PUT_U_INT32\n");
+ f_print(fout, "#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v))\n");
+ f_print(fout, "#endif\n");
+
tell = ftell(fout);
/* print data definitions */
while ((def = get_definition()) != NULL) {