summaryrefslogtreecommitdiffstats
path: root/Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c')
-rw-r--r--Bachelor/Verteilte Systeme/Praktikum2/loesung/telbuch_server.c78
1 files changed, 78 insertions, 0 deletions
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;
+}