From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../Praktikum2/loesung/telbuch_server.c | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c (limited to 'Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c') diff --git a/Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c b/Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c new file mode 100644 index 0000000..6710998 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c @@ -0,0 +1,78 @@ +/* + * This is sample code generated by rpcgen. + * These are only templates and you can use them + * as a guideline for developing your own functions. + */ + +#include "telbuch.h" + +Ergebnis * +addentry_1_svc(addStruct *argp, struct svc_req *rqstp) +{ + static Ergebnis result; + + /* my code START */ + + FILE* out; + + if ((out = fopen("telbuch", "a")) == NULL) // Datei zum Schreiben öffnen + { + strcpy(result.Eintrag,"Oeffnen der Telefonbuchdatei fehgeschlagen"); + return &result; + } + fseek(out,0,SEEK_END); // Dateizeiger an Ende setzen + + // neuen Eintrag reinschreiben + fprintf(out, "%s %s\n", argp->Name, argp->TelNr); + + fclose(out); + + strcpy(result.Eintrag,"Eintrag erfolgreich"); + + /* my code END */ + + return &result; +} + +Ergebnis * +searchentry_1_svc(searchStruct *argp, struct svc_req *rqstp) +{ + static Ergebnis result; + + /* my code START */ + char name[41]; + char nname[20]; + char vname[20]; + char telnr[20]; + + FILE* in; + + if ((in = fopen("telbuch", "r")) == NULL) // Datei zum Lesen öffnen + { + strcpy(result.Eintrag,"Oeffnen der Telefonbuchdatei fehgeschlagen"); + return &result; + } + + while (!feof(in)) // Nach dem Eintrag suchen + { + fscanf(in, "%s %s %s", nname, vname, telnr); + strcpy(name, nname); + strcat(name, " "); + strcat(name, vname); + if (strcmp(argp->Name, name) == 0) // Eintrag gefunden + { + strcpy(result.Eintrag, "gefunden: "); + strcat(result.Eintrag, name); + strcat(result.Eintrag, " "); + strcat(result.Eintrag, telnr); + return &result; + } + } + + // soweit kommt die Funktion nur, wenn kein Eintrag gefunden wurde. + strcpy(result.Eintrag, "Eintrag nicht gefunden"); + + /* my code END */ + + return &result; +} -- cgit v1.2.3