From f734c058260bddb0ed8be0afc1823fd0b17b9ff6 Mon Sep 17 00:00:00 2001
From: Per Cederqvist <ceder@lysator.liu.se>
Date: Mon, 20 May 1991 22:01:39 +0000
Subject: [PATCH] Initial RCS checkin.

---
 src/server/ChangeLog              | 790 ++++++++++++++++++++++++++++++
 src/server/FileList               | 126 +++++
 src/server/Magics                 |  15 +
 src/server/To-do                  |  30 ++
 src/server/call-switch.awk        |  54 ++
 src/server/com-h.awk              |  21 +
 src/server/fnc-def-init.awk       |  23 +
 src/server/fncdef.txt             |  69 +++
 src/server/prot-a-parse-arg-c.awk | 107 ++++
 src/server/prot-a-parse-arg-h.awk |  12 +
 src/server/version.incl           |   1 +
 11 files changed, 1248 insertions(+)
 create mode 100644 src/server/ChangeLog
 create mode 100644 src/server/FileList
 create mode 100644 src/server/Magics
 create mode 100644 src/server/To-do
 create mode 100644 src/server/call-switch.awk
 create mode 100644 src/server/com-h.awk
 create mode 100644 src/server/fnc-def-init.awk
 create mode 100644 src/server/fncdef.txt
 create mode 100644 src/server/prot-a-parse-arg-c.awk
 create mode 100644 src/server/prot-a-parse-arg-h.awk
 create mode 100644 src/server/version.incl

diff --git a/src/server/ChangeLog b/src/server/ChangeLog
new file mode 100644
index 000000000..ea449a945
--- /dev/null
+++ b/src/server/ChangeLog
@@ -0,0 +1,790 @@
+Sat May 18 04:22:06 1991  Per Cederqvist  (ceder at nanny)
+
+	* Installerade och startade diskomd 0.29.1.
+
+	* Div. bugfixar i diskomd och simple-cache.c.
+
+Fri May 17 06:00:00 1991  Per Cederqvist  (ceder at nanny)
+
+	* Installerade diskomd 0.29 som ramkomd.
+
+Wed May  8 04:43:50 1991  Thomas Bellman  (Bellman@nanny)
+
+	* conference.c (set_super_conf): Fixed bug that made it impossible
+	  to set the super-conf to zero.
+
+
+Mon May  6 09:34:00 1991  Per Cederqvist  (ceder at nanny)
+
+	* Anv{nder funktionerna i memory.h s} l}ng m|jligt i st{llet f|r
+	  smalloc/sfree.
+
+	* Nu har servern tv} kopior av namnet p} varje m|te. Dels en som
+	  alltid ligger i minnet (name_list i ramkomd, small_conf_arr i
+	  diskomd), dels en som bara {r inladdad ibland (i diskomd),
+	  conf_arr.
+
+Fri May  3 14:49:19 1991  Per Cederqvist  (ceder at nanny)
+
+	* 0.28 installerad.
+
+	* Anv{nder traverse_connections |verallt d{r man g}r igenom alla
+	  uppkopplingar.
+
+	* Ny fil: internal-connections.[hc] (i brist p} b{ttre namn).
+	  Inneh}ller new_client(), kill_client(), get_conn_by_number() och
+	  traverse_connections(). I forts{ttningen skall man inte anv{nda
+	  sig av f{ltet (Connection *)->next, utan i st{llet anv{nda
+	  traverse_connections() och get_conn_by_number().
+
+	* Nytt anrop: who_am_i som ger en Session_no.
+
+Thu May  2 17:24:50 1991  Per Cederqvist  (ceder at nanny)
+
+	* St{ngde av TIME_SYNC i ram-cache.c. Nu kanske n}gon orkar l{sa
+	  log-filerna igen...
+
+	* Nu kollas flaggan kill_me i Connection i _alla_ uppkopplingar
+	  efter varje anrop, s} nu b|r disconnect fungera.
+
+Mon Apr 29 19:02:12 1991  Per Cederqvist  (ceder at nanny)
+
+	* Namnbyte i Who_info och Connection: session resp. client_no
+	  heter numera session_no.fff
+
+	* Ett nytt asynkront meddelande: logout. (Pers_no & Session_no).
+
+	* Tv} nya anrop: get_session_info och disconnect.
+
+Mon Apr 22 14:32:19 1991  Per Cederqvist  (ceder at nanny)
+
+	* version 0.27.2 installerad.
+
+	* Nu skickas sessionsnummer med n{r man g|r 'pepsi' och
+	  'change_what_i_am_doing'.
+
+Sat Apr  6 11:47:47 1991  Per Cederqvist  (ceder at nanny)
+
+	* version 0.27.1 installerad.
+
+Sun Mar 24 18:49:56 1991  Per Cederqvist  (ceder at nanny)
+
+	* parser.c: lookup_name(): Nu tas alla '-' bort - |kad
+	  QZ-kom-kompatibilitet! F|r tillf{llet g|rs det bara om SERVER {r
+	  definierad (f|r att inte riskera att f|rst|ra kod i klienten).
+
+Tue Mar 19 20:27:45 1991  Peter Eriksson  (pen at nanny)
+
+	* connections.c: logout_client() om CONN_MAGIC_FREE, skriver
+	  nu i logfilen, och g|r return omeddelbart - snabbfix f|r
+	  att servern inte ska krascha s} ofta..
+
+	* version 0.26 installerad
+
+Mon Mar 18 11:28:46 1991  Peter Eriksson  (pen at nanny)
+
+	* config.c: DEFAULT_CLIENT_SERVICE_NAME = lyskom-client
+		    IN_CLIENT_PORT = 4896
+
+	* version 0.24 installerad
+
+Mon Mar 18 09:12:59 1991  Peter Eriksson  (pen at nanny)
+
+	* connections.c: mux_handle_packet(): mux->parse.string nollst{lls
+          nu efter att den har tilldelats till cp->hostname...
+
+	* version 0.23 installerad
+
+Mon Mar 18 01:56:50 1991  Per Cederqvist  (ceder at nanny)
+
+	* send_message: ny funktion och asynkront meddelande. Ers{tter
+	  broadcast. Broadcast finns kvar f|r bak}tkompatibilitet.
+
+Sun Mar 17 23:49:28 1991  Per Cederqvist  (ceder at nanny)
+
+	* mux.c: mux_flush(): om uppkopplingen var av typ MUX_TYPE_CLIENT
+	  s} gjordes inte isc_flush. 
+
+Sun Mar 17 03:50:23 1991  Peter Eriksson  (pen at nanny)
+
+	* connections.c: logout_client(), snabb fix f|r ett
+	  problem som medf|rde att mux_close() anropas tv}
+	  g}nger n}nstans (tror jag), och cp->mux var d}
+	  NULL andra g}ngen...
+
+	* Version 0.21 installerad
+
+Sat Mar 16 00:03:29 1991  Per Cederqvist  (ceder at nanny)
+
+	* Simpelt mux-protokoll implementerat.
+
+	* change_name(): Nu kan man byta namn fr}n "foo" till "foo".
+
+	* Version 0.20 installerad
+
+Tue Mar 12 02:16:12 1991  Peter Eriksson  (pen at nanny)
+
+	* server version 0.19 installerad.... BUG fixad i ISCLIB
+	  som har medf|rt att en buffert vart |verskriven...
+
+	* server version 0.18 installerad. (magiska nummer inf|rda
+	  {ven i Connection och Mux strukturerna)
+
+Mon Mar 11 21:23:02 1991  Peter Eriksson  (pen at nanny)
+
+	* ram-smalloc.c/smalloc.c: Magiskt nummer inf|rt...
+
+Mon Mar 11 19:49:10 1991  Per Cederqvist  (ceder at nanny)
+
+	* dbck anpassat till nya formatet. "dbck -g" garbar i text-filen.
+
+Mon Mar 11 01:48:34 1991  Peter Eriksson  (pen at nanny)
+
+	* 0.17 installerad och ig}ngsatt.
+
+Sun Mar 10 21:23:50 1991  Peter Eriksson  (pen at nanny)
+
+	* connections.c: bugfix i new_client():setup av all_conn...-listan
+
+Sat Mar  9 15:25:09 1991  Peter Eriksson  (pen at nanny)
+
+	* Buffring av meddelanden g|rs nu i Mux-rutinerna.
+
+Sat Mar  9 05:52:34 1991  Per Cederqvist  (ceder at nanny)
+
+	* 0.16 installerad och ig}ngsatt.
+
+Sat Mar  9 03:25:25 1991  Peter Eriksson  (pen at nanny)
+
+	* Allt f{rdigt f|r MUX-hantering. Nu fattas bara ett
+	  riktigt protokoll, samt buffring av utdata i Mux_client
+	  strukturen. Major rewrite av det mesta som hade med
+	  isc_ att g|ra. 
+
+Thu Mar  7 03:16:00 1991  Peter Eriksson  (pen at nanny)
+
+	* Nu g}r servern genom kompilatorn, med allt fixat till
+	  ISC. Jag har dock inte provk|rt...
+
+Wed Mar  6 23:08:16 1991  Per Cederqvist  (ceder at nanny)
+
+	* P} grund av Isc-ombyggnaden har jag inte kunnat provk|ra.
+
+	* prot-a.c: prot_a_parse_packet(): Om man skrev n}got som matchade
+	  regexpen "A[ \t\n]*\([0-9]+\)[^H].*" n{r man loggade in s} sattes
+	  username till "\1H\{\}\1".
+
+	* text.c: get_text(): Nu kan man (troligtvis) h{mta en "tom" text
+	  utan att f} felet KOM_INDEX_OUT_OF_RANGE.
+
+Tue Mar  5 19:17:50 1991  Per Cederqvist  (ceder at nanny)
+
+	* ram-smalloc.c: rewrote tmp_alloc and free_tmp. Reason: a spurios
+	  "rm ram-smalloc.c"...
+
+Sun Mar  3 22:16:34 1991  Per Cederqvist  (ceder at nanny)
+
+	* isc-serverinfo.[hc]: Uppsnyggad. Anv{nder inte l{ngre n}got som
+	  {r lyskom-specifikt. F|ljd{ndringar i connections.c, dit en del
+	  saker blev flyttade. Inge hj{lpte mig v{lja vad som skulle bort.
+
+	* N{r n}gon f|rs|ker logga in, men servern {r full, sker nu
+	  f|ljande: 
+
+	  * Den som kopplar upp f}r texten "%% No connections left.\n".
+
+	  * Alla andra f}r det asynkrona meddelandet 11
+	    (ay_rejected_connection) (inga argument).
+
+Sat Mar  2 18:47:37 1991  Per Cederqvist  (ceder at nanny)
+
+	* i_am_on_obsolete skickas inte l{ngre.
+
+	* broadcast tar nu en str{ng, inte ett textnummer. Skrev broadcast
+	  och funktioner f|r det asynkrona meddelandet broadcast.
+
+Sat Mar  2 01:13:29 1991  Lars Willf|r  (willfor at nanny)
+
+	* Fixade en bug i set_permitted_submitters som gjorde att man inte
+	  kunde s{tta till}tna inl{ggsskrivare till 0 (vem som helst).
+
+Tue Feb 19 00:52:03 1991  Per Cederqvist  (ceder at nanny)
+
+	* Bytte versionsnummer till 0.13.
+
+	* conference.c: set_etc_motd(): Ett |verfl|digt semikolon gjorde
+	  att det inte gick att s{tta etc_motd.
+
+Sun Feb 17 06:44:46 1991  Thomas Bellman  (bellman at nanny)
+
+	* isc-server.c: isc_flush(): Provar att stoppa redan n{r man n}tt
+	  upp till maxgr{nsen MAXQUEUEDSIZE, och inte v{nta tills man
+	  |verskrider den.
+
+Fri Feb 15 23:39:46 1991  Per Cederqvist  (ceder at nanny)
+
+	* De tv} {ndringarna nedan fungerade inte, s} jag }terst{llde allt.
+
+	* Om /etc/nologin existerar skickar servern str{ngen
+	  "%% No logins allowed." vid uppkoppling. Om fildeskriptorerna {r
+	  slut skickas str{ngen "%% No connections left."
+
+	* isc_getnextevent(): Nu returneras en ny uppkoppling {ven i
+	  fallet ISC_EVENT_REJECT. Anroparen m}ste nu anropa
+	  isc_logoutclient p} en s}dan uppkoppling innan isc_getnextevent
+	  anropas n{sta g}ng.
+
+Sun Feb 10 10:04:24 1991  Per Cederqvist  (ceder at nanny)
+
+	* convert.c och convert-cache.c konverterade databasen. Filerna
+	  f}r vara kvar ett tag till, tills vi ser att allt verkligen
+	  fungerar.
+
+	* Inge och jag skrev om ram-cache.c, ram-output.c och ram-parse.c.
+	  Nu sparas textmassan i en s{rskild fil. Dessutom sparas
+	  klockslag som time_t, inte som struct tm. Dessa tv} }tg{rder
+	  ledde till _stora_ hastighetsvinster - ca en faktor 2.
+
+	  [ndringar i cached_delete_text(), cached_get_text(),
+	  cached_create_text(), init_cache(), fparse_text_stat(),
+	  foutput_text_stat(), foutput_time() och fparse_time().
+
+	* server/ram-output2.c heter numera server/ram-output.c
+
+	* server/services.h heter numera server/internal-services.h
+	  (include/services.h {r of|r{ndrad).
+
+Fri Feb  8 20:24:59 1991  Per Cederqvist  (ceder at nanny)
+
+	* cache.h: Ny funktion: cached_conf_exist(Conf_no).
+
+	* cache.h: cached_get_name anv{nds inte! Det {r nu borttaget.
+
+Tue Feb  5 21:17:42 1991  Per Cederqvist  (ceder at nanny)
+
+	* Info om hur l}ng tid de olika delarna av synkningen tog lagras
+	  om TIME_SYNC {r definierad i ram-cache.c.
+
+	* Nu kan man l{sa motd_of_lyskom {ven om man inte {r inloggad.
+
+Tue Feb  5 02:58:34 1991  Peter Eriksson  (pen at nanny)
+
+	* isc-server.c/iscserver.h: Max queue size implementerad.
+	  Statistik / client lagras i Isc_clientinfo.
+
+Tue Feb  5 00:51:44 1991  Per Cederqvist  (ceder at nanny)
+
+	* db/ramkomd-logg flyttad till etc/ramkomd-logg.
+
+	* etc/pid: process-id skrivs i denna fil.
+
+Fri Feb  1 23:19:04 1991  Per Cederqvist  (ceder at nanny)
+
+	* 0.10 installerad och startad.
+
+	* get_map fungerade inte om man f|rs|kte h{mta en delmap d{r alla
+	  texter man ville ha var raderaded. 90-120 == 547689541.
+	  (unsigned). R{ttat, men fr}gan {r hur m}nga liknande buggar det
+	  finns...
+
+Tue Jan 22 10:14:28 1991  Lars Willf|r  (willfor at nanny)
+
+	* [ndrade lite #include-rader s} att make depend ska fungera.
+	  Kommenterade bort '#include "CloseFileDescriptors"' ur logII.c.
+
+Fri Jan 18 10:33:58 1991  Per Cederqvist  (ceder at nanny)
+
+	* Nytt asynkront meddelande: ay_login. S{nds n{r n}gon loggar in.
+	  Nu s{nds inte ay_i_am_on n{r man loggar in l{ngre.
+
+Thu Jan 17 14:43:14 1991  Per Cederqvist  (ceder at nanny)
+
+	* 0.09 installerad.
+
+	* ram-cache.c: Om TIME_SYNC {r definierad loggas information om
+	  hur l}ng tid varje syncning tar.
+
+	* Inge:s funktioner f|r att spara databasen n{stan dubbelt s}
+	  snabbt som vanligt testade och inlagda.
+
+Mon Jan 14 11:45:26 1991  Per Cederqvist  (ceder at nanny)
+
+	* forced_leave_conf(): Ny funktion som anropas n{r n}gon uttr{der
+	  ur ett m|te (av n}gon orsak). Den skickar ett asynkront
+	  meddelande till alla uppkopplingar d{r personen i fr}ga {r
+	  inloggad och ber{ttar att han inte l{ngre {r med i m|tet. Det
+	  asynkrona meddelandet heter "ay_leave_conf".
+		       
+Sun Jan 13 20:26:29 1991  Inge Wallin  (inge at nanny)
+
+	* Stoppat ner filerna ../*.h i det nyskapade directoryt ../include
+	  samt fixat samtliga h- och c-filer i serverdirectoryt att
+	  inkludera <foo.h> i st{llet f|r "../foo.h". Dessutom lagt till
+	  -I../include i Makefile.
+
+Sun Jan 13 11:27:31 1991  Per Cederqvist  (ceder at nanny)
+
+	* membership.c: get_memberhip(): Om n}gon f|rs|ker h{mta en
+	  medlemsskapslista f|r en person den {r organisat|r f|r utan att
+	  h{mta de l{sta texterna s} s{tts read_texts till NULL. Bug! Fixat.
+
+	* do_delete_text(): L{nken fr}n f|rfattaren till texten
+	  (created_texts) s{tts till noll n{r texten tas bort.
+
+Fri Jan 11 13:37:00 1991  Per Cederqvist  (ceder at nanny)
+
+	* create_text(): Nu kan en text inte vara kommentar/fotnot till
+	  samma text mer {n en g}ng.
+
+Thu Jan 10 21:42:16 1991  Thomas Bellman  (bellman at nanny)
+
+	* connections.c: call_function(): Variabeln 'status' tilldelades
+	  v{rdet FALSE, fast den var av typen Success.
+
+Thu Jan 10 20:40:46 1991  Peter Eriksson  (pen at nanny)
+
+	* Added feature: rwhod support. (rwhod.c / connections.c)
+
+Thu Jan 10 12:40:33 1991  Per Cederqvist  (ceder at nanny)
+
+	* ram-output.c: foutput_membership() och ram-parse.c:
+	fparse_membership(): Om no_of_read != 0 och read_texts == NULL s}
+	s{tts no_of_read till 0 och ett meddelande loggas.
+
+	* ram-parse.c: fparse_person(): en liten minnesl{cka tillt{ppt.
+	  L|senordet lagrades dubbelt i servern. Eftersom fparse_person
+	  bara anv{nds vid uppstart s} p}verkas inte storleken s}
+	  mycket... 
+
+Wed Jan  9 16:53:56 1991  Per Cederqvist  (ceder at nanny)
+
+	* mark_as_read(): adjust_read anropas alltid. F|rut kunde det
+	  h{nda att read_texts blev o{ndlig om en text raderades innan man
+	  l{ste den. Nu ska det inte bli s}. (Men det finns fortfarande
+	  minst en bugg kvar n}gonstans i mark_as_read).
+
+Mon Jan  7 11:00:37 1991  Per Cederqvist  (ceder at nanny)
+
+	* mark_as_read(): Nu protesterar servern om man f|rs|ker markera
+	  en text med lokalt nummer 0.
+
+Mon Jan  7 09:05:24 1991  Peter Eriksson  (pen at nanny)
+
+	* connections.c&isc-server.c: ISC_EVENT_REJECT
+
+Sun Jan  6 16:13:49 1991  Per Cederqvist  (ceder at nanny)
+
+	* text-garb.c: garb_text() loggar nu hur m}nga texter
+	  den har tagit bort efter varje runda.
+
+Sun Jan  6 16:20:59 1991  Peter Eriksson  (pen at nanny)
+
+	* missing-ansi.c: skapade 'strerror()'
+	  connections.c:  {ndrade i toploop() s} fel skrivs ut som
+			  text ist{llet f|r som siffror.
+          isc-server.c:   ditto i isc_flush().
+
+Sat Jan  5 16:20:04 1991  Peter Eriksson  (pen at nanny)
+
+	* connections.c: fexists(): nollst{llning av 'errno'.
+	                 skriv ut event->msg om den {r satt vid
+			 ISC_EVENT_ERROR.
+	  isc-server.c:  isc_getnextevent(): s{tt isc_ei->msg till
+			 en beskrivande text vid ISC_EVENT_ERROR.
+
+Sat Jan  5 04:13:01 1991  Per Cederqvist  (ceder at nanny)
+
+	* La in en close i isc_logoutclient. Nu ska v{l f|rbindelserna
+	  kopplas ner ordentligt, hoppas jag.
+
+Fri Jan  4 21:14:36 1991  Per Cederqvist  (ceder at nanny)
+
+	* Version 0.07 tagen i drift.
+
+Fri Jan  4 20:13:40 1991  Peter Eriksson  (pen at nanny)
+
+	* isc-server.c: non-blocking writes och transmit queue funkar nu.
+
+Fri Jan  4 12:02:03 1991  Per Cederqvist  (ceder at nanny)
+
+	* create_text returnerar numera KOM_ILL_MISC om man f|rs|ker med
+	  samma mottagare mer {n en g}ng.
+
+	* add_recipient klarar nu {ven av att addera en cc_recpt.
+
+Fri Jan  4 11:57:48 1991  Peter Eriksson  (pen at nanny)
+
+	* printf.c: Ansifikation...
+	  isc-server.c: isc_printf(), isc_putc(), isc_write() & isc_flush()
+			anv{nder nu alla en per-klient s{ndbuffer.
+			Dock anv{nds blocking-writes fortfarande...
+	  prot-a-*.c & ram-*.c: Anv{nder nu isc-rutinerna f|r utmatning
+		                ist{llet f|r stdio.
+				
+
+Sun Dec 16 21:55:19 1990  Thomas Bellman  (bellman at nanny)
+
+	* services.c: pepsi(), change_what_i_am_doing(): Man b|r nog s{tta
+	  alla f{lt till n}got vettigt i infostrukturen som man skickar
+	  till async_i_am_on()...  Speciellt str{ngar som anv{ndarnamnet.
+
+Sat Dec 15 11:04:45 1990  Per Cederqvist  (ceder at nanny)
+
+	* prot-a-send-async.c, async.h: i_am_on skall naturligtvis skicka
+	  en hel Who_info. Nu g|rs det. F|r att inte elisp-klienten skall
+	  sluta fungera har numera i_am_on nummer 6. Gamla i_am_on, nummer
+	  2, finns fortfarande kvar, men kommer att tas bort om n}gon
+	  m}nad eller s} n{r alla elisp-klienter som anv{nder gamla
+	  i_am_on har f|rsvunnit.
+
+Fri Dec 14 22:15:11 1990  Per Cederqvist  (ceder at nanny)
+
+	* send-async.c: Nu t}l servern att det finns klienter som inte har
+	  hunnit ber{tta vilket protokoll de anv{nder. Denna bugg har
+	  orsakat ett antal omstarter...
+
+Mon Dec 10 05:32:01 1990  Thomas Bellman  (bellman at nanny)
+
+	* ramkomdc: chdir() till /usr/lyskom/etc innan man dumpar core.
+	  Kommer antagligen inte att funka...
+
+Mon Dec 10 05:31:33 1990  Peter Eriksson  (pen at nanny)
+
+	* isc-server.c: non-blocking writes. (FNDELAY).
+
+Wed Dec  5 17:44:27 1990  Per Cederqvist  (ceder at nanny)
+
+	* ram-cache.c: {ndrade konstanten MAX_TEXT fr}n 9999 till 15000.
+	  R{ttade en bugg i cached_create_text(). F|rut s} kollade den om
+	  next_text_num var == MAX_TEXT, och sa i s} fall ifr}n, MEN
+	  r{knade upp next_text_num. Text nummer (MAX_TEXT+1) kunde allts}
+	  skapas...
+
+Sun Dec  2 18:06:01 1990  Per Cederqvist  (ceder at nanny)
+
+	* ram-output.c: foutput_time()
+	  ram-parse.c: fparse_time()
+	  Tidpunkter sparas numera i GMT. P} s} s{tt slipper man ta reda
+	  p} vilken tidszon man k|r i.
+
+Thu Nov 29 14:43:27 1990  Per Cederqvist  (ceder at nanny)
+
+	* Jag {ndrade i typen Isc_clientinfo och tog bort en hel del som
+	  jag i st{llet la i Connection (som jag skapade). Protokoll A
+	  isolerat till typen Prot_a. Nu tror jag att allt som {r
+	  protokoll-specifikt {r isolerat, s} l}ngt det g}r. Arbetet med
+	  att implementera protokoll B b|rjar nu...
+
+Wed Nov 28 07:57:48 1990  Per Cederqvist  (ceder at nanny)
+
+	* [ven f|r de asynkrona meddelandena {r nu protokoll A isolerat.
+
+Tue Nov 27 14:39:12 1990  Peter Eriksson  (pen at nanny)
+
+	* kill -USR2 g|r fork()&abort() s} man kan f} ut en core av en
+	  exekverande server utan att d|da den.
+
+	* ramkomd.c - sighandler_quit - exit(1) -> abort().
+
+Mon Nov 26 21:15:13 1990  Per Cederqvist  (ceder at nanny)
+
+	* Isc_clientinfo-structuren har ett nytt f{lt: u_char protocol.
+
+	* F|rberedde f|r protokoll B genom att isolera protokoll A. Nu
+	  ligger allt protkoll-A-specifikt i filerna prot-a-output.[hc],
+	  prot-a-parse-arg-[hc].awk, prot-a-parse.[hc] och prot-a.[hc].
+	  Observera dock att jag inte {r helt klar {n: jag har inte gjort
+	  n}got }t asynkrona meddelanden.
+
+Sun Nov 25 14:17:47 1990  Peter Eriksson  (pen at nanny)
+
+	* isc-cache.c&prot-a-output.c: fflush()+write(fileno()) -> fwrite().
+	  Borde snabba upp lite. 
+
+Sun Nov 25 03:08:24 1990  Per Cederqvist  (ceder at nanny)
+
+	* services.c: mark_text(): Nu g}r det att markera texter!
+	  [ndringar i manipulate.c:text_read_access - man f}r alltid l{sa
+	  texter som man har markerat. Dessutom n}gra nya funktioner i
+	  manipulate.c f|r att hantera markeringar.
+
+	* services.c: set_conf_type(): Det {r inte till}tet att ha ett
+	  m|te/en person som {r secret men inte rd_prot.
+
+Sat Nov 24 14:19:53 1990  Per Cederqvist  (ceder at nanny)
+
+	* kom_get_unread_confs ger vilka m|ten en viss person har ol{sta
+	  inl{gg i.
+
+Sat Nov 24 09:33:32 1990  Peter Eriksson  (pen at nanny)
+
+	* MAX_NO_CONNECTIONS satt till 14 om __sequent__. 
+	  [14(max_no_clients)+1(portnum)+3(stdio)+1(databas)+1(reject)]
+
+	* Nya kommandoradsoptioner: -D{databas-path}, -p{portnum}.
+
+	* DATAFILE, BACKUPFILE -> datafile, backupfile (variabla pga
+	  support av olika databasdir).
+	  
+Thu Nov 22 08:06:06 1990  Peter Eriksson  (pen at nanny)
+
+	* Hackade in -SIGUSR1/-SIGHUP/-SIGQUIT (sync, sync&die, sync&die-fast)
+
+	* MAX_NO_OF_CONNECTIONS - funktionalitet
+
+	* Check av /etc/nologin f|r utesp{rr av anv{ndare
+
+Wed Nov 21 10:16:28 1990  Per Cederqvist  (ceder at nanny)
+
+	* end-of-atomic: Nu anropas garb-text() om servern {r idle.
+
+	* ram-cache.c: traverse_text och cached_get_garb_nice skrivna.
+
+	* isc-server.c: Nu anv{nds SO_DONTLINGER, SO_REUSEADDR och
+	  SO_KEEPALIVE p} socketen.
+
+	* MAX_NO_OF_CONNECTIONS {r 15 om __sequent__ {r definierat, annars
+	  32.
+
+	* config.c: USERNAME_LEN {ndard fr}n 32 till 128 f|r att f} plats
+	  med ett maskinnamn ocks}.
+
+	* Makefile: /bin/sed fattar inte heller \{n\}, precis som GNU-sed,
+	  s} jag skrev om Makefilen utan den.
+
+Sun Nov 11 15:36:51 1990  Per Cederqvist  (ceder at nanny)
+
+	* cached_set_garb_nice och cached_get_garb_nice.
+
+Fri Nov  9 14:58:54 1990  Per Cederqvist  (ceder at nanny)
+
+	* server/cache.c och server/flurp.c (vad {r det?):
+	  '#include "../ldb/ldb.h"' bortkommenterat f|r att kunna g|ra
+	  make depend.
+
+	* Makefilen: -L bortkommenterad fr}n LIBS.
+
+Fri Nov  2 00:55:32 1990  Peter Eriksson  (pen at lave)
+
+	* isc_server.c: isc_gethostname() - fixade s} att den returnerade
+	  IP-nummret (som en String) som de ska enligt specen...
+
+Thu Nov  1 01:38:44 1990  Per Cederqvist  (ceder at lave)
+
+	* manipulate.c: do_sub_comment() och do_sub_foootnote klarade inte
+	  av att f} NULL som text-status. Det fick dom fr}n do_delete_text...
+
+	* manipulate.c: do_sub_recpt(): om conf_c var NULL s} gick det }t
+	  skogen. Om conf_no inte existerade gick det }t samma h}ll.
+
+Sat Oct 20 14:35:59 1990  Per Cederqvist  (ceder at lave)
+
+	* Efter ett gott r}d fr}n Lars Aronsson s} har jag lagt till
+	  funktionerna get_person_stat_old, get_conf_stat_old och
+	  who_is_on_old. De har samma nummer som de gamla get_person_stat
+	  et c. P} s} s{tt {r den nya servern kompatibel med gamla
+	  klienter.
+
+	* Who_info inneh}ller nu tv} nya f{lt: connection, som {r ett
+	  l|pnummer som r{knas upp med ett f|r varje ny connection till
+	  klienten, och username, som {r userid@host f|r just den h{r
+	  uppkopplingen. (Om personen samtidigt {r inloggad fr}n en annan
+	  maskin kan man inte se det med Who_info_old).
+
+	* get_person_stat och get_conf_stat skall numera inte ha n}gon
+	  mask. De skickar alltid med namnet.
+
+Fri Oct 19 20:42:32 1990  Per Cederqvist  (ceder at lave)
+
+	* L{nkning sker nu med -lresolv, s} att servern fr}gar nameservers
+	  om namnet p} maskiner n{r den bara lyckas f} ip-nummret.
+
+Sun Oct 14 05:00:23 1990  Per Cederqvist  (ceder at lave)
+
+	* isc-server.c: isc_readmsg(): Det inl{sta meddelandet avslutades
+	  med ett '\0', som aldrig anv{nds i servern. Det {r ju i och f|r
+	  sig inte s} farligt, men problemet var att nollan lades utanf|r
+	  det allokerade utrymmet om det kom f|r mycket data p} en g}ng...
+	  Nu l{ggs aldrig n}gon '\0':a in.
+
+Thu Sep 13 20:38:22 1990  Per Cederqvist  (ceder at laila)
+
+	* isc-output.c: output_conference():
+          [ven conf-type |verf|rs nu. Det var aldrig meningen att ta bort
+	  den...
+
+Sat Sep  1 01:22:53 1990  Per Cederqvist  (ceder at lave)
+
+	* Nu fungerar {ndringarna, i alla fall delvis.
+
+Tue Aug 28 14:08:33 1990  Per Cederqvist  (ceder at lave)
+
+	* [ndringen av formaten f|r Text_status och tider ska vara klara nu.
+
+Sun Aug 26 16:23:40 1990  Per Cederqvist  (ceder at lage)
+
+	* P}b|rjade {ndring av formatet f|r |verf|ring av Text_status. I
+	  forts{ttningen kommer {ven no_of_chars att |verf|ras.
+
+	* P}b|rjade {ndring av formatet f|r en time_t. I forts{ttningen
+	  kommer alla klockslag att |verf|ras som en struct tm. Serverns
+	  lokala tid kommer att |verf|ras. Just nu {r {ndringen genomf|rd
+	  p} n}gra, men inte alla st{llen.
+
+Tue Aug 21 19:46:50 1990  Per Cederqvist  (ceder at lave)
+
+	* get_text() tar nu h{nsyn till first_char och end_char.
+
+	* get_members() testad.
+
+	* Tog bort Template f|r att f|rhindra att n}gon {ndrar i den av
+	  misstag. 
+
+Sun Aug 12 17:17:44 1990  Per Cederqvist  (ceder at lave)
+
+	* get_members() tittar ox}, men den {r inte testad. T}get g}r
+	  snart, och jag vill hinna {ta middag f|rst... Vi ses om 14 dar!
+
+	* get_created_texts() tittar p} 'first' och 'len'.
+
+	* En hel massa sm}buggar, bl a i mark_as_read(), r{ttade.
+
+	* get_created_texts() och get_members() skrivna. Dom tittar _inte_
+	  p} 'first' och 'no_of_*' {n.
+
+	* get_membership() tittar nu p} 'first' och 'no_of_confs'.
+
+Sat Aug 11 02:13:15 1990  Per Cederqvist  (ceder at lave)
+
+	* services.c: create_text(): Det {r nu till}tet att ha ett loc_no
+	  som misc_item. Det ignoreras, oberoende av var det tr{ffas p}.
+
+Thu Aug  9 05:13:44 1990  Thomas Bellman  (bellman at laila)
+
+	* Make depend utg}r fr}n Makefile och inte fr}n Template.  Man kan
+	  allts} {ndra direkt i Makefile.
+
+	* get_membership() skriven, men gl|mmer titta p} parametrarna
+	  'first' och 'no_of_confs'.  Det {r inte testat heller...
+
+Sat Aug  4 01:41:41 1990  Thomas Bellman  (bellman at lave)
+
+	* manipulate.c: text_read_access(): Nu kan man inte l{sa
+	  texter utan att vara inloggad.  ]t minstone enligt
+	  k{llkoden.  Den server som k|r har fortfarande det gapande
+	  s{kerhetsh}let.
+
+Tue Jul 24 04:40:32 1990  Per Cederqvist  (ceder at lave)
+
+	* F|rb{ttrad felhantering n{r f|r l}nga str{ngar kommer till
+	  servern. Nu trunkerar isc-parse.c str{ngen till den maximala
+	  l{nged +1 och l}ter services.c uppt{cka att str{ngen {r f|r l}ng
+	  och protestera. F|rut skrev isc-parse.c '%% LysKOM protocol
+	  error.' och det var nog lite v{l h}rt...
+
+Mon Jul 23 23:44:49 1990  Per Cederqvist  (ceder at lave)
+
+	* En b{ttre version av unique_name(), som inte alltid svara TRUE,
+	  {r implementerad.
+
+	* Asynkrona meddelanden {r implementerade.
+
+Fri Jul 13 00:11:48 1990  Per Cederqvist  (ceder at lave)
+
+	* services.h kan inte sl{ngas l{ngre. Fast nuf|rtiden s} {r den
+	  ganska liten...
+
+Wed Jun 27 07:42:59 1990  Thomas Bellman  (bellman at lave)
+
+	* services.h kan sl{ngas.  Filen har ersatts av
+	  kom:/services.h, som numera kan anv{ndas b}de i serverdelen
+	  och klientdelen.  Filerna 'services.c' och 'manipulate.c' {r
+	  {ndrade till att inkludera "../services.h" i st{llet.
+	  Flaggan SERVER definieras i Makefilen.
+
+Wed Jun  6 04:31:02 1990  Per Cederqvist  (ceder at laila)
+
+	* end-of-atomic.[hc]: Funktion som skall anropas efter varje
+	  atomiskt anrop.
+
+Wed May 30 18:47:42 1990  Linus Tolke  (linus at lave)
+
+	* cache.c rivet lite (cached_create_person,
+	  mark_conferens_as_changed.)
+
+	* cache.[hc] {ndrade i definitionen av cached_lookup_name s} att
+	  den skall st{mma med -----------------------------------------\
+	  dvs char * -> String 						|
+			       						|
+Fri May 25 07:32:18 1990  Per Cederqvist  (ceder at lave)		|
+									|
+	* manipulate.[hc]: Ny fil som inneh}ller hj{lpfunktioner till	|
+	  services.c. Skall endast anv{ndas av services.c.		|
+									|
+	* log.[hc]: Funktioner f|r att skriva till log-fil.		|
+									|
+Wed May 23 18:30:26 1990  Per Cederqvist  (ceder at lave)		|
+									|
+	* cache.[hc], services.[hc]: Nu anv{nds String |verallt, och <--/
+	  char * inte alls. Det {r nog mycket i cache.[hc] som inte funkar
+	  l{ngre...
+	  
+
+Tue May 22 22:01:19 1990  Per Cederqvist  (ceder at laila)
+
+	* 2kom/server/services.h skapad. H{r ligger saker som t ex cachen m}ste
+	  komma }t, men som klienterna inte ska komma }t. Det som bara
+	  klienterna ska komma }t ligger fortfarande i 2kom/services.h
+
+Wed May  9 21:25:13 1990  Linus Tolke  (linus at laila)
+
+	* Rev infinitesimalt i cache.[hc]. mark_person_as changed fungerar
+	  kanske.
+
+Tue May  8 23:19:37 1990  Per Cederqvist  (ceder at lage)
+
+	* Slog ihop cache.[ch] och unprot.[ch] till cache.[ch].
+	  unprot.[ch] finns kvar ett tag till, men inneh}ller bara skr{p.
+
+Mon May  7 16:23:28 1990  Per Cederqvist  (ceder at lage)
+
+	* server.[hc] heter numera lyskomd.[hc] i god UNIX-anda.
+
+Sat May  5 20:53:21 1990  Per Cederqvist  (ceder at lave)
+
+	* unprot.[hc]: Tog bort en massa funktionsstubbar som aldrig
+	  kommer att avn{ndas. S}g till att .h och .c inneh}ller samma
+	  funktioner. unprot.c g}r nu igenom kompilatorn!
+
+Thu May  3 18:54:46 1990  Per Cederqvist  (ceder at lage)
+
+	* unprot.c: Jag skriver in en kommentar "/****/" f|re
+	  de funktioner som jag verkligen anv{nder.
+
+Tue Apr 24 03:34:14 1990  Per Cederqvist  (ceder at lage)
+
+	* smalloc.[hc]: Ny fkn srealloc.
+
+	* server.h: Nytt f{lt i Connection: Person * person.
+
+Sat Apr 21 13:22:26 1990  Per Cederqvist  (ceder at lave)
+
+	* Ny Makefile, som regenerar sig sj{lv automagiskt. (make depend)
+
+	* server.h: La till f{ltet ena_level i typen Connection.
+
+Wed Apr 18 01:35:49 1990  Per Cederqvist  (ceder at lage)
+
+	* services.c: get_marks har nu ingen parameter. Man kan bara titta
+		      p} sina egna markeringar.
+
+	* unprot.c: Tog bort unprot_change_what_i_am_doing
+
+	* Flyttade minneshanteringen till smalloc.c
+
+	* cache.c: La till ett anrop: get_name.
+
+Tue Apr 17 23:54:52 1990  Per Cederqvist  (ceder at lage)
+
+	* services.{ch}: {ndrade anropet av create_text
+
diff --git a/src/server/FileList b/src/server/FileList
new file mode 100644
index 000000000..d08e0d917
--- /dev/null
+++ b/src/server/FileList
@@ -0,0 +1,126 @@
+This is a list of all files in the server directory.
+
+Atomic calls
+------------
+*  services.h
+*  manipulate.h
+*  admin.c
+*  admin.h
+*  conference.c
+*  membership.c
+*  person.c
+*  session.c
+*  text.c
+
+*  version.incl
+   Inkluderas av admin.c. Inneh}ller versionsnummret multiplicerat med 100.
+   I b-server blir det en str{ng.
+
+*  parser.c@
+*  parser.h@
+   Matchar namn. Samma fil som anv{nds i tty-klienten. Ska bort till b-server.
+
+
+Data cache
+----------
+*  cache.c
+*  cache.h
+   H{r skulle det ha legat en fungerande cache om inte mud funnits...
+
+Highest level of I/O
+--------------------
+*  async.h
+*  send-async.c
+*  send-async.h
+*  call-switch.incl
+*  com-h.awk
+*  com.h
+*  connections.c
+*  connections.h
+*  end-of-atomic.c
+*  end-of-atomic.h
+*  fnc-def-init.awk
+*  fnc-def-init.incl
+*  fncdef-no-str-limit.txt
+*  fncdef.txt
+*  isc-parse.c
+*  isc-parse.h
+
+Low-level I/O
+-------------
+*  isc-server.c
+*  isc-server.h
+*  printf.c
+
+Awk scripts
+-----------
+*  call-switch.awk
+
+Misc
+----
+*  config.c
+*  kom-types.c
+*  kom-errno.c@
+*  log.c
+*  log.h
+*  minmax.h
+*  missing-ansi.c
+*  smalloc.c
+*  smalloc.h
+*  std-disclaimer.h
+
+Dbck
+----
+*  dbck
+*  dbck-cache.c
+*  dbck.c
+*  misc-parser.c@
+*  misc-parser.h@
+
+Non-sources
+-----------
+*  ChangeLog
+*  FileList
+*  Makefile
+*  TAGS
+*  To-do
+
+Main
+----
+*  lyskomd.c
+*  lyskomd.h
+*  text-garb.c
+*  text-garb.h
+
+Protocol A
+----------
+*  prot-a-output.c
+*  prot-a-output.h
+*  prot-a-parse-arg-c.awk
+*  prot-a-parse-arg-h.awk
+*  prot-a-parse-arg.c
+*  prot-a-parse-arg.h
+*  prot-a-parse.c
+*  prot-a-parse.h
+*  prot-a-send-async.c
+*  prot-a-send-async.h
+*  prot-a.c
+*  prot-a.h
+
+String packet
+-------------
+*  s-collat-tables.c@
+*  s-string.c@
+
+Ramkomd
+-------
+*  ram-cache.c
+*  ram-output.c
+*  ram-output.h
+*  ram-output2.c
+*  ram-parse.c
+*  ram-parse.h
+*  ram-smalloc.c
+*  ramkomd
+*  ramkomd.c
+
diff --git a/src/server/Magics b/src/server/Magics
new file mode 100644
index 000000000..8eda7faeb
--- /dev/null
+++ b/src/server/Magics
@@ -0,0 +1,15 @@
+SMALLOC:
+	alloc = 0x12FE56A0
+	free  = 0xCA348E63
+
+Connection:
+	alloc = 0x18F4AE74
+	free  = 0x67A7B144
+
+Mux:
+	alloc = 0x56AE17DB
+	free  = 0xF24A6BE7
+
+ISC:
+	alloc = 0x12F54ACE
+	free  = 0xEE47A37F
diff --git a/src/server/To-do b/src/server/To-do
new file mode 100644
index 000000000..9576fc38a
--- /dev/null
+++ b/src/server/To-do
@@ -0,0 +1,30 @@
+Borde ha en skedjuler f|r sync&garb. Sync&garb borde returnera antalet
+millisekunder tills de skall bli anropade igen. Det minsta av dessa
+v{rden borde vara timeout till isc_getnextevent.
+
+-----------------
+
+membership.c : adjust_read() har l|ss. (Suck. Vilka l|ss? Jag minns
+inte nu. D{remot s} b|rjar det ju dyka upp rapporter om att folk f}r
+l{sa samma inl{gg flera g}nger, s} det st{mmer nog... /ceder)
+
+-----------------
+
+log() borde se ut s} h{r:
+
+void
+log ( Severity sev
+	char *format;
+	...)
+
+enum severity {
+	MSG,
+	ERR,
+	FATAL
+}
+
+typedef enum severity Severity;
+
+Om log() f}r FATAL s} {r det samma sak som restart_lyskom(). Om log f}r f|r m}nga ERR f|r snabbt (eller f|r m}nga likadana?) s} startas lyskom om.
+
+--------------------
\ No newline at end of file
diff --git a/src/server/call-switch.awk b/src/server/call-switch.awk
new file mode 100644
index 000000000..0fbbad0de
--- /dev/null
+++ b/src/server/call-switch.awk
@@ -0,0 +1,54 @@
+BEGIN {
+    printf("/* Don't edit this file - it is generated automatically");
+    printf(" from\n   call-switch.awk and fncdef.txt */\n");
+    printf("\tswitch(client->function)\n\t{\n"); 
+}
+$1 != "#" {
+    printf("\tcase call_fnc_%s:\n\t    ", $2);
+    if ( $1 == "success" )
+	printf("status = %s(", $2);
+    else
+	printf("res->number = %s(", $2);
+    
+    num=0;
+    string=0;
+    c_string=0;
+    for ( i = 3; i <= NF; i++)
+    {
+	if ( i != 3 )
+	    printf(", ");
+	if ( $i == ":" )
+	{
+	    printf("&res->%s", $(i+1));
+	    break;
+	}
+	if ( $i == "num" )
+	    printf("client->num%d", num++);
+	else if ( $i == "string" )
+	    printf("client->string%d", string++);
+	else if ( $i == "c_string" )
+	    printf("client->c_string%d", c_string++);
+	else if ( $i == "priv_bits" )
+	    printf("client->priv_bits");
+	else if ( $i == "conf_type" )
+	    printf("client->conf_type");
+	else if ( $i == "c_local_text_no_p" )
+	    printf("client->c_local_text_no_p");
+	else if ( $i == "c_misc_info_p" )
+	    printf("client->c_misc_info_p");
+	else
+	    printf("\n#error in file server/fncdef.txt\n");
+    }
+		  
+    printf(");\n");
+    if ( $1 == "number" )
+    {
+	if ( $2 == "get_time" )
+	    printf("\t    status = OK;\n");
+	else
+	    printf("\t    status = (res->number != 0) ? OK : FAILURE;\n");
+    }
+
+    printf("\t    break;\n\n");
+}
+END { printf("\t}\n"); }
diff --git a/src/server/com-h.awk b/src/server/com-h.awk
new file mode 100644
index 000000000..28b293939
--- /dev/null
+++ b/src/server/com-h.awk
@@ -0,0 +1,21 @@
+BEGIN {
+    printf("/*\n");
+    printf(" * Don't edit this file! It is generated from fncdef.txt\n");
+    printf(" * and com-h.awk.\n");
+    printf(" */\n\n");
+    printf("enum call_header {");
+    cnt = 0;
+}
+$1 == "#" {
+    next;
+}
+cnt > 0 {
+    printf(",");
+}
+{
+    printf("\n    call_fnc_%-20s = %d", $2, cnt++);
+}
+END   { printf("\n};\n\n"); 
+	printf("typedef enum call_header Call_header;\n");
+}
+
diff --git a/src/server/fnc-def-init.awk b/src/server/fnc-def-init.awk
new file mode 100644
index 000000000..870499fd1
--- /dev/null
+++ b/src/server/fnc-def-init.awk
@@ -0,0 +1,23 @@
+BEGIN {
+    printf("/* Don't edit this file - it is generated automatically");
+    printf(" from\n   fnc-def-init.awk and fncdef.txt */\n\n");
+    printed_flg=0;
+}
+printed_flg==1 {
+    printf(",\n");
+}
+$1 != "#" {
+    printf("    {");
+
+    if ( $(NF-1) == ":" )
+	printf("%7s,", $NF);
+    else
+	printf("%7s,", $1);
+
+    printf("prot_a_parse_arg_%s}", $2);
+
+    printed_flg=1;
+}
+END {
+    printf("\n");
+}
diff --git a/src/server/fncdef.txt b/src/server/fncdef.txt
new file mode 100644
index 000000000..ea099caba
--- /dev/null
+++ b/src/server/fncdef.txt
@@ -0,0 +1,69 @@
+#
+# This file is used to describe the functions in services.c. All
+# functions that are reachable from the clients are listed here, together
+# with their argument and return types.
+#
+# NEVER alter any functions that have been in use for a while! Add 
+# new/modified functions last on this list!
+#
+# Functions that are reachable when using protocal A:
+#
+# (Functions whose name end in _old are obsolete and should not be used.)
+#
+success login	 	 num c_string (PWD_LEN)
+success logout	    
+success pepsi	 	 num
+success change_name 	 num c_string (CONF_NAME_LEN)
+success change_what_i_am_doing string (WHAT_DO_LEN)
+number create_person 	 c_string (CONF_NAME_LEN) c_string (PWD_LEN)
+success get_person_stat_old num num : person
+success set_priv_bits 	 num priv_bits
+success set_passwd 	 num c_string (PWD_LEN) c_string (PWD_LEN)
+success query_read_texts num num : membership
+number create_conf 	 c_string (CONF_NAME_LEN) conf_type
+success delete_conf 	 num
+success lookup_name 	 c_string (CONF_NAME_LEN) : conf_list
+success get_conf_stat_old num num : conference
+success add_member 	 num num num num
+success sub_member 	 num num
+success set_presentation num num
+success set_etc_motd 	 num num
+success set_supervisor 	 num num
+success set_permitted_submitters num num
+success set_super_conf 	 num num
+success set_conf_type 	 num conf_type
+success set_garb_nice 	 num num
+success get_marks 	 : mark_list
+success mark_text 	 num num
+success get_text 	 num num num : string
+success get_text_stat 	 num : text_stat
+success mark_as_read 	 num num c_local_text_no_p
+number create_text 	 string (TEXT_LEN) num c_misc_info_p
+success delete_text 	 num
+success add_recipient 	 num num num
+success sub_recipient 	 num num
+success add_comment 	 num num
+success sub_comment 	 num num
+success get_map 	 num num num : text_list
+success get_time	 : time_date
+success get_info 	 : info
+success add_footnote	 num num
+success sub_footnote	 num num
+success who_is_on_old	 : who_info_list_old
+success set_unread	 num num
+success set_motd_of_lyskom num
+success enable		 num
+success sync 
+success shutdown	 num
+success broadcast	 c_string (BROADCAST_LEN)
+success get_membership	 num num num num : membership_list
+success get_created_texts num num num : text_list
+success get_members	 num num num : member_list
+success get_person_stat  num : person
+success get_conf_stat	 num : conference
+success who_is_on	 : who_info_list
+success get_unread_confs num : conf_no_list
+success send_message	 num c_string (BROADCAST_LEN)
+success get_session_info num : session_info
+success disconnect	 num
+success who_am_i	 : session_no
diff --git a/src/server/prot-a-parse-arg-c.awk b/src/server/prot-a-parse-arg-c.awk
new file mode 100644
index 000000000..112bf036e
--- /dev/null
+++ b/src/server/prot-a-parse-arg-c.awk
@@ -0,0 +1,107 @@
+BEGIN {
+    printf("/* Don't edit this file - it is generated automatically");
+    printf(" from\n   prot-a-parse-arg-c.awk and fncdef.txt */\n\n");
+    printf("#include <setjmp.h>\n");
+    printf("#include <kom-types.h>\n");
+    printf("#include \"com.h\"\n");
+    printf("#include \"isc.h\"\n");
+    printf("#include \"connections.h\"\n");
+    printf("#include \"isc-parse.h\"\n");
+    printf("#include \"smalloc.h\"\n");
+    printf("#include \"prot-a.h\"\n");
+    printf("#include \"prot-a-parse.h\"\n");
+    printf("#include \"prot-a-parse-arg.h\"\n");
+    printf("#include <config.h>\n\n");
+}
+$1 != "#" {
+    printf("void\nprot_a_parse_arg_%s(Connection *client)\n{\n", $2);
+    printf("    switch( client->fnc_parse_pos )\n");
+    printf("    {\n");
+    num=0;
+    string=0;
+    c_string=0;
+    for ( i = 3; i <= NF; i++)
+    {
+	if ( $i == ":" )
+	    break;
+
+	printf("    case %d:\n", i - 3);
+	if ( $i == "num" )
+	    printf("\tclient->num%d = prot_a_parse_long(client);\n", num++);
+	else if ( $i == "c_string" )
+	    printf("\tprot_a_parse_string(client, &client->c_string%d, %s);\n",
+		   c_string++, $(++i));
+	else if ( $i == "string" )
+	    printf("\tprot_a_parse_string(client, &client->string%d, %s);\n",
+		   string++, $(++i));
+	else if ( $i == "priv_bits" )
+	    printf("\tprot_a_parse_priv_bits(client, &client->priv_bits);\n");
+	else if ( $i == "conf_type" )
+	    printf("\tprot_a_parse_conf_type(client, &client->conf_type);\n");
+	else if ( $i == "c_local_text_no_p" )
+	{
+	    printf("\tif ( parse_nonwhite_char(client) != '{' )\n");
+	    printf("\t    longjmp(parse_env, ISC_PROTOCOL_ERR);\n");
+	    printf("\tif ( client->num%d > MARK_AS_READ_CHUNK )\n", num-1);
+	    printf("\t    longjmp(parse_env, ISC_PROTOCOL_ERR);\n");
+	    printf("\n");
+	    printf("\tclient->c_local_text_no_p = ");
+	    printf("smalloc(client->num%d\n", num-1);
+	    printf("\t\t\t\t\t    * sizeof(Local_text_no));\n\n");
+	    printf("\tclient->array_parse_pos = 0;\n");
+	    printf("\tclient->fnc_parse_pos = %d;\n", i - 2);
+	    printf("    case %d:\n", i - 2);
+	    printf("\twhile( client->array_parse_pos < ");
+	    printf("client->num%d )\n", num-1);
+	    printf("\t{\n");
+	    printf("\t    client->c_local_text_no_p[ client->");
+	    printf("array_parse_pos ]\n");
+	    printf("\t\t= prot_a_parse_long(client);\n");
+	    printf("\t    ++client->array_parse_pos;\n");
+	    printf("\t}\n");
+	    printf("\tclient->fnc_parse_pos = %d;", i - 1);
+	    printf("    case %d:\n", i - 1);
+	    printf("\tif ( parse_nonwhite_char(client) != '}' )\n");
+	    printf("\t    longjmp(parse_env, ISC_PROTOCOL_ERR);\n");
+	}
+	else if ( $i == "c_misc_info_p" )
+	{
+	    printf("\tif ( parse_nonwhite_char(client) != '{' )\n");
+	    printf("\t    longjmp(parse_env, ISC_PROTOCOL_ERR);\n");
+	    printf("\tif ( client->num%d > MAX_CREA_MISC )\n", num-1);
+	    printf("\t    longjmp(parse_env, ISC_PROTOCOL_ERR);\n");
+	    printf("\n");
+	    printf("\tclient->c_misc_info_p = ");
+	    printf("smalloc(client->num%d\n", num-1);
+	    printf("\t\t\t\t\t* sizeof(Misc_info));\n");
+	    printf("\tclient->array_parse_pos = 0;\n");
+	    printf("\tclient->fnc_parse_pos = %d;\n", i - 2);
+	    printf("    case %d:\n", i - 2);
+	    printf("\twhile( client->array_parse_pos < ");
+	    printf("client->num%d )\n", num-1);
+	    printf("\t{\n");
+	    printf("\t    prot_a_parse_misc_info(client,");
+	    printf(" &client->c_misc_info_p");
+	    printf("[ client->array_parse_pos ]);\n");
+	    printf("\t    ++client->array_parse_pos;\n");
+	    printf("\t}\n");
+	    printf("\tclient->fnc_parse_pos = %d;\n", i - 1);
+	    printf("    case %d:\n", i - 1);
+	    printf("\tif ( parse_nonwhite_char(client) != '}' )\n");
+	    printf("\t    longjmp(parse_env, ISC_PROTOCOL_ERR);\n");
+	}
+	else
+	    printf("#error in prot-a-parse-arg-c.awk: not ready yet.\n");
+
+	if ( i != NF && $(i+1) != ":")
+	    printf("\tclient->fnc_parse_pos = %d;\n", i - 2);
+    }
+
+    printf("    default:\n");
+    printf("\tclient->fnc_parse_pos = 0;\n");
+    printf("    }\n");
+    printf("}\n\n");
+}
+END {
+    printf("/* end of this auto generated file. */\n");
+}
diff --git a/src/server/prot-a-parse-arg-h.awk b/src/server/prot-a-parse-arg-h.awk
new file mode 100644
index 000000000..ac6bf4b09
--- /dev/null
+++ b/src/server/prot-a-parse-arg-h.awk
@@ -0,0 +1,12 @@
+BEGIN {
+    printf("/* Don't edit this file - it is generated automatically");
+    printf(" from\n   prot-a-parse-arg-h.awk and fncdef.txt */\n\n");
+}
+$1 != "#" {
+    printf("void prot_a_parse_arg_%s(Connection *client);\n", $2);
+}
+
+END {    printf("/* end of this auto generated file. */\n");
+}
+
+    
diff --git a/src/server/version.incl b/src/server/version.incl
new file mode 100644
index 000000000..c914c6a5d
--- /dev/null
+++ b/src/server/version.incl
@@ -0,0 +1 @@
+2901
-- 
GitLab