> Looks like you declaraed several things both in library.h
> and server.c, and they don't match. I guess the Sun
> compiler ignored it, but the GNU compiler wasn't
> willing to put up with it. Fix your code. Can't say
> more without seeing the relevant lines in server.c
> and library.h
> Chris Mattern
Hi Chris,
the code seems to be ok, but please correct me if I'm wrong. You can
take a look at it bellow (just included the relevant stuff - I hope).
The library.h is generated by rpcgen from the library.x file. I
would be great if you could take a look at it. Thanks a lot.
Stan
/* Modul: library.x
(IDL-Datei) */
struct i_entry /* Struktur zum Uebergeben der ISBN
Nr.*/
{
Zeichenkette isbn;
Quote:};
struct book_entry /* Struktur zum Uebergeben aller
*/
{ /* relevanten Daten eines Buches
*/
Zeichenkette isbn;
Zeichenkette author;
Zeichenkette title;
Zeichenkette status;
Zeichenkette name_of_inquirer;
Quote:};
.
.
.
.
program LIBRARY
{
version LIBRARYVERSION
{
q_result book_search(i_entry) = 1;
int enter_book(b_entry) = 2;
int delete_book(i_entry) = 3;
int get_book(b_get) = 4;
int unget_book(i_entry) = 5;
} = 1; /* Versionsnummer */
Quote:} = 0x20000023; /* Programmnummer
*/
*****************************************************************************
/* Modul: server.c
(Server-Programm) */
#include <rpc/rpc.h>
#include "library.h"
#include "ini.h"
q_result *book_search_1 ( i_entry *ient ) {
/* Code */
return (&ergebnis);
Quote:}
int *enter_book_1 (b_entry *entry)
{
/* Code */
return (&result);
};
.
.
.
.
****************************************************************************************
/* LIBRARY.H */
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#ifndef _LIBRARY_H_RPCGEN
#define _LIBRARY_H_RPCGEN
#include <rpc/rpc.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef char Zeichenkette[50];
struct i_entry {
Zeichenkette isbn;
Quote:};
typedef struct i_entry i_entry;
struct book_entry {
Zeichenkette isbn;
Zeichenkette author;
Zeichenkette title;
Zeichenkette status;
Zeichenkette name_of_inquirer;
Quote:};
typedef struct book_entry book_entry;
struct q_result {
int result;
Zeichenkette isbn;
Zeichenkette author;
Zeichenkette title;
Zeichenkette status;
Zeichenkette name_of_inquirer;
Quote:};
typedef struct q_result q_result;
struct b_entry {
Zeichenkette isbn;
Zeichenkette author;
Zeichenkette title;
Quote:};
typedef struct b_entry b_entry;
struct b_get {
Zeichenkette isbn;
Zeichenkette name_of_inquirer;
Quote:};
typedef struct b_get b_get;
#define LIBRARY 0x20000023
#define LIBRARYVERSION 1
#if defined(__STDC__) || defined(__cplusplus)
#define book_search 1
extern q_result * book_search_1(i_entry *, CLIENT *);
extern q_result * book_search_1_svc(i_entry *, struct svc_req *);
#define enter_book 2
extern int * enter_book_1(b_entry *, CLIENT *);
extern int * enter_book_1_svc(b_entry *, struct svc_req *);
#define delete_book 3
extern int * delete_book_1(i_entry *, CLIENT *);
extern int * delete_book_1_svc(i_entry *, struct svc_req *);
#define get_book 4
extern int * get_book_1(b_get *, CLIENT *);
extern int * get_book_1_svc(b_get *, struct svc_req *);
#define unget_book 5
extern int * unget_book_1(i_entry *, CLIENT *);
extern int * unget_book_1_svc(i_entry *, struct svc_req *);
extern int library_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
#else /* K&R C */
#define book_search 1
extern q_result * book_search_1();
extern q_result * book_search_1_svc();
#define enter_book 2
extern int * enter_book_1();
extern int * enter_book_1_svc();
#define delete_book 3
extern int * delete_book_1();
extern int * delete_book_1_svc();
#define get_book 4
extern int * get_book_1();
extern int * get_book_1_svc();
#define unget_book 5
extern int * unget_book_1();
extern int * unget_book_1_svc();
extern int library_1_freeresult ();
#endif /* K&R C */
/* the xdr functions */
#if defined(__STDC__) || defined(__cplusplus)
extern bool_t xdr_Zeichenkette (XDR *, Zeichenkette);
extern bool_t xdr_i_entry (XDR *, i_entry*);
extern bool_t xdr_book_entry (XDR *, book_entry*);
extern bool_t xdr_q_result (XDR *, q_result*);
extern bool_t xdr_b_entry (XDR *, b_entry*);
extern bool_t xdr_b_get (XDR *, b_get*);
#else /* K&R C */
extern bool_t xdr_Zeichenkette ();
extern bool_t xdr_i_entry ();
extern bool_t xdr_book_entry ();
extern bool_t xdr_q_result ();
extern bool_t xdr_b_entry ();
extern bool_t xdr_b_get ();
#endif /* K&R C */
#ifdef __cplusplus
Quote:}
#endif
#endif /* !_LIBRARY_H_RPCGEN */