From 0d3685624928cf12b63e7ffdec97ca18b470c6bc Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Mon, 11 Nov 1991 00:27:47 +0000 Subject: [PATCH] Added create_anonymous_text. --- src/server/ChangeLog | 4 +++ src/server/fncdef.txt | 5 ++-- src/server/prot-a.c | 5 ++-- src/server/text.c | 70 +++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 78 insertions(+), 6 deletions(-) diff --git a/src/server/ChangeLog b/src/server/ChangeLog index 89f6a32bb..d091fbc9e 100644 --- a/src/server/ChangeLog +++ b/src/server/ChangeLog @@ -1,3 +1,7 @@ +Mon Nov 11 01:08:09 1991 Per Cederqvist (ceder at ruben) + + * fncdef.txt, prot-a.c, text.c: Added create_anonymous_text. + Tue Oct 29 15:48:15 1991 Linus Tolke Y (linus at ruben) * prot-a-output.c, prot-a-parse.c, ram-output.c, ram-parse.c diff --git a/src/server/fncdef.txt b/src/server/fncdef.txt index 51518237a..b41e47c98 100644 --- a/src/server/fncdef.txt +++ b/src/server/fncdef.txt @@ -1,5 +1,5 @@ # -# $Id: fncdef.txt,v 0.6 1991/11/10 19:02:35 linus Exp $ +# $Id: fncdef.txt,v 0.7 1991/11/11 00:27:41 ceder Exp $ # Copyright (C) 1991 Lysator Academic Computer Association. # # This file is part of the LysKOM server. @@ -22,7 +22,7 @@ # # Please mail bug reports to bug-lyskom@lysator.liu.se. # -# $Id: fncdef.txt,v 0.6 1991/11/10 19:02:35 linus Exp $ +# $Id: fncdef.txt,v 0.7 1991/11/11 00:27:41 ceder Exp $ # # This file is used to describe the functions in services.c. All # functions that are reachable from the clients are listed here, together @@ -94,3 +94,4 @@ success disconnect num success who_am_i : session_no success set_user_area num num success get_last_text time_date : text_no +number create_anonymous_text c_string (TEXT_LEN) num c_misc_info_p diff --git a/src/server/prot-a.c b/src/server/prot-a.c index a71f2f84a..5ebeb9c9b 100644 --- a/src/server/prot-a.c +++ b/src/server/prot-a.c @@ -1,5 +1,5 @@ /* - * $Id: prot-a.c,v 0.9 1991/11/10 19:02:18 linus Exp $ + * $Id: prot-a.c,v 0.10 1991/11/11 00:27:32 ceder Exp $ * Copyright (C) 1991 Lysator Academic Computer Association. * * This file is part of the LysKOM server. @@ -26,7 +26,7 @@ * Protocol A. */ -static char *rcsid = "$Id: prot-a.c,v 0.9 1991/11/10 19:02:18 linus Exp $"; +static char *rcsid = "$Id: prot-a.c,v 0.10 1991/11/11 00:27:32 ceder Exp $"; #include <stdio.h> @@ -291,6 +291,7 @@ prot_a_is_legal_fnc(Call_header fnc) case call_fnc_who_am_i: case call_fnc_set_user_area: case call_fnc_get_last_text: + case call_fnc_create_anonymous_text: return TRUE; default: diff --git a/src/server/text.c b/src/server/text.c index 8363e7d26..37bc0617d 100644 --- a/src/server/text.c +++ b/src/server/text.c @@ -1,5 +1,5 @@ /* - * $Id: text.c,v 0.9 1991/11/10 19:02:05 linus Exp $ + * $Id: text.c,v 0.10 1991/11/11 00:27:17 ceder Exp $ * Copyright (C) 1991 Lysator Academic Computer Association. * * This file is part of the LysKOM server. @@ -28,7 +28,7 @@ * All atomic calls that deals with texts. */ -static char *rcsid = "$Id: text.c,v 0.9 1991/11/10 19:02:05 linus Exp $"; +static char *rcsid = "$Id: text.c,v 0.10 1991/11/11 00:27:17 ceder Exp $"; #include <time.h> #include <stdlib.h> @@ -1705,6 +1705,72 @@ create_text(String message, return text; } +/* + * Create an anonymous text. + * + * This is just like create_text, but the author of the text is set to + * Pers_no 0, to guarantee that the author is anonymous. + * + * (This should really be called create_ftp_text (in analogy with + * change-conference which was truncated to CC, which was transmuted + * into pepsi) but public demand said NO!) + * + * Returns text_no of the created text, or 0 if there was an error. + */ +extern Text_no +create_anonymous_text(String message, + u_short no_of_misc, + Misc_info * misc ) +{ + Text_no text; + Text_stat * t_stat; + extern int errno; + + CHK_LOGIN(0); + + /* Check the length of the text. */ + + if ( s_strlen (message) >= TEXT_LEN ) + { + kom_errno = KOM_LONG_STR; + return 0; + } + + /* Check all misc-items */ + + if ( create_text_check_misc(&no_of_misc, misc) != OK + || (text = cached_create_text( message )) == 0) + { + return 0; + } + + if ( (t_stat = cached_get_text_stat( text )) == NULL ) + { + restart_kom("create_anonymous_text: can't get text-stat of " + "newly created text.\n" + "Text == %d, kom_errno == %d, errno == %d\n", + text, kom_errno, errno); + } + + t_stat->author = 0; + t_stat->creation_time = time(NULL); + t_stat->no_of_lines = count_lines( message ); + t_stat->no_of_chars = s_strlen( message ); + + if ( create_text_add_miscs(text, no_of_misc, misc) != OK ) + { + log("ERROR: create_text(): can't add miscs.\n"); + return 0; + } + + mark_text_as_changed( text ); + /* Don't add this person to create - we want true anonymity! */ + + async_new_text( text, t_stat ); /* Send asynchronous message. */ + + return text; +} + /* * Delete a text. * -- GitLab