From aaace67b48e9d93b460d9a9d423a3530e5b49d8a Mon Sep 17 00:00:00 2001
From: nobody <nomail@example.com>
Date: Wed, 28 Aug 1991 02:36:37 +0000
Subject: [PATCH] This commit was manufactured by cvs2svn to create tag
 'v0.31.7'.

---
 ChangeLog                             |  382 ---------
 FileList                              |  136 ----
 Makefile                              |   58 --
 doc/Buggar.fixade                     |  449 -----------
 doc/Bugrapporter                      |  775 ------------------
 doc/Distfile                          |    1 -
 doc/LOGG                              |   77 --
 doc/Mailinglist                       |   13 -
 doc/Makefile                          |   28 -
 doc/Makefile.template                 |   39 -
 doc/README                            |   79 --
 doc/coding-standards.txt              |   73 --
 doc/dbck.latexinfo                    |   97 ---
 doc/disc-cache.spec                   |  174 ----
 doc/elisp-client.internals            |  455 -----------
 doc/elisp-client.user-manual          |  802 -------------------
 doc/fileformat                        |   26 -
 doc/ideer/cache                       |   36 -
 doc/ideer/cache-tankar                |  114 ---
 doc/ideer/cache.spec                  |   73 --
 doc/ideer/prot-B-analys               |  325 --------
 doc/ideer/versioner                   |  129 ---
 doc/libraries                         |    4 -
 doc/mall-swe.latexinfo                |   90 ---
 doc/mall.latexinfo                    |   77 --
 doc/man/Makefile                      |   29 -
 doc/man/dbck.8                        |  105 ---
 doc/man/lyskom.5                      |  294 -------
 doc/man/lyskomd.8                     |   95 ---
 doc/man/man3/isc3.x                   |  186 -----
 doc/man/man5/lyskom.5                 |  294 -------
 doc/man/man5/ramkom.5                 |  294 -------
 doc/man/man8/dbck.8                   |  105 ---
 doc/man/man8/lyskomd.8                |   95 ---
 doc/man/man8/ramkomd.8                |   95 ---
 doc/man/man8/updateLysKOM.8           |   13 -
 doc/man/updateLysKOM.8                |   13 -
 doc/misc_items                        |   43 -
 doc/mux.proto                         |   29 -
 doc/prot-A.bnf                        | 1067 -------------------------
 doc/prot-A.slightly-obsolete          |  230 ------
 doc/prot-A.txt                        | 1067 -------------------------
 doc/security-levels.txt               |   50 --
 doc/server-async.extend               |   23 -
 doc/server.extend                     |   65 --
 doc/skeleton.doc                      |   13 -
 foo                                   |    0
 scripts/Depend.make                   |   19 -
 scripts/List-Files                    |   25 -
 scripts/Makefile                      |   15 -
 scripts/Parallell-depend.make         |   26 -
 scripts/RCS-depend.make               |   27 -
 scripts/Summarize-Headers             |   43 -
 scripts/import.make                   |   51 --
 src/Makefile                          |   59 --
 src/include/Makefile                  |   38 -
 src/include/compiler.h                |   41 -
 src/include/config.h                  |  133 ---
 src/include/debug.h                   |   14 -
 src/include/dependencies              |    0
 src/include/kom-errno.h               |   86 --
 src/include/kom-types.h               |  533 ------------
 src/include/misc-types.h              |   34 -
 src/include/server/Makefile           |   27 -
 src/include/server/dependencies       |    0
 src/include/server/smalloc.h          |   57 --
 src/include/services.h                |  477 -----------
 src/libraries/Makefile                |   56 --
 src/libraries/libansi/Makefile        |   40 -
 src/libraries/libansi/README          |    5 -
 src/libraries/libansi/config.h        |    8 -
 src/libraries/libansi/dependencies    |    1 -
 src/libraries/libansi/libansi.a       |  Bin 1280 -> 0 bytes
 src/libraries/libansi/strerror.c      |   23 -
 src/libraries/libcommon/ChangeLog     |   15 -
 src/libraries/libcommon/Makefile      |   71 --
 src/libraries/libcommon/README        |    2 -
 src/libraries/libcommon/dependencies  |   26 -
 src/libraries/libcommon/kom-errno.c   |  175 ----
 src/libraries/libcommon/misc-parser.c |  182 -----
 src/libraries/libcommon/misc-parser.h |   76 --
 src/libraries/libcommon/parser.c      |  418 ----------
 src/libraries/libcommon/parser.h      |  147 ----
 src/libraries/libmisc/ChangeLog       |   43 -
 src/libraries/libmisc/Makefile        |   65 --
 src/libraries/libmisc/README          |    2 -
 src/libraries/libmisc/dependencies    |   46 --
 src/libraries/libmisc/numlist.c       |  615 --------------
 src/libraries/libmisc/numlist.h       |   92 ---
 src/libraries/libmisc/numlist2.c      |   99 ---
 src/libraries/libmisc/numlist2.h      |   35 -
 src/libraries/libmisc/pom.c           |  169 ----
 src/libraries/libmisc/pom.h           |   34 -
 src/libraries/libmisc/s-collat-tabs.c |  108 ---
 src/libraries/libmisc/s-collat-tabs.h |   35 -
 src/libraries/libmisc/s-string.c      |  938 ----------------------
 src/libraries/libmisc/s-string.h      |  445 -----------
 src/libraries/libmisc/testnumlist     |  Bin 32768 -> 0 bytes
 src/libraries/libmisc/testnumlist.c   |  109 ---
 src/libraries/libmisc/zmalloc.c       |  171 ----
 src/libraries/libmisc/zmalloc.h       |  116 ---
 101 files changed, 14789 deletions(-)
 delete mode 100644 ChangeLog
 delete mode 100644 FileList
 delete mode 100644 Makefile
 delete mode 100644 doc/Buggar.fixade
 delete mode 100644 doc/Bugrapporter
 delete mode 100644 doc/Distfile
 delete mode 100644 doc/LOGG
 delete mode 100644 doc/Mailinglist
 delete mode 100644 doc/Makefile
 delete mode 100644 doc/Makefile.template
 delete mode 100644 doc/README
 delete mode 100644 doc/coding-standards.txt
 delete mode 100644 doc/dbck.latexinfo
 delete mode 100644 doc/disc-cache.spec
 delete mode 100644 doc/elisp-client.internals
 delete mode 100644 doc/elisp-client.user-manual
 delete mode 100644 doc/fileformat
 delete mode 100644 doc/ideer/cache
 delete mode 100644 doc/ideer/cache-tankar
 delete mode 100644 doc/ideer/cache.spec
 delete mode 100644 doc/ideer/prot-B-analys
 delete mode 100644 doc/ideer/versioner
 delete mode 100644 doc/libraries
 delete mode 100644 doc/mall-swe.latexinfo
 delete mode 100644 doc/mall.latexinfo
 delete mode 100644 doc/man/Makefile
 delete mode 100644 doc/man/dbck.8
 delete mode 100644 doc/man/lyskom.5
 delete mode 100644 doc/man/lyskomd.8
 delete mode 100644 doc/man/man3/isc3.x
 delete mode 100644 doc/man/man5/lyskom.5
 delete mode 100644 doc/man/man5/ramkom.5
 delete mode 100644 doc/man/man8/dbck.8
 delete mode 100644 doc/man/man8/lyskomd.8
 delete mode 100644 doc/man/man8/ramkomd.8
 delete mode 100644 doc/man/man8/updateLysKOM.8
 delete mode 100644 doc/man/updateLysKOM.8
 delete mode 100644 doc/misc_items
 delete mode 100644 doc/mux.proto
 delete mode 100644 doc/prot-A.bnf
 delete mode 100644 doc/prot-A.slightly-obsolete
 delete mode 100644 doc/prot-A.txt
 delete mode 100644 doc/security-levels.txt
 delete mode 100644 doc/server-async.extend
 delete mode 100644 doc/server.extend
 delete mode 100644 doc/skeleton.doc
 delete mode 100644 foo
 delete mode 100644 scripts/Depend.make
 delete mode 100755 scripts/List-Files
 delete mode 100644 scripts/Makefile
 delete mode 100644 scripts/Parallell-depend.make
 delete mode 100644 scripts/RCS-depend.make
 delete mode 100755 scripts/Summarize-Headers
 delete mode 100644 scripts/import.make
 delete mode 100644 src/Makefile
 delete mode 100644 src/include/Makefile
 delete mode 100644 src/include/compiler.h
 delete mode 100644 src/include/config.h
 delete mode 100644 src/include/debug.h
 delete mode 100644 src/include/dependencies
 delete mode 100644 src/include/kom-errno.h
 delete mode 100644 src/include/kom-types.h
 delete mode 100644 src/include/misc-types.h
 delete mode 100644 src/include/server/Makefile
 delete mode 100644 src/include/server/dependencies
 delete mode 100644 src/include/server/smalloc.h
 delete mode 100644 src/include/services.h
 delete mode 100644 src/libraries/Makefile
 delete mode 100644 src/libraries/libansi/Makefile
 delete mode 100644 src/libraries/libansi/README
 delete mode 100644 src/libraries/libansi/config.h
 delete mode 100644 src/libraries/libansi/dependencies
 delete mode 100644 src/libraries/libansi/libansi.a
 delete mode 100644 src/libraries/libansi/strerror.c
 delete mode 100644 src/libraries/libcommon/ChangeLog
 delete mode 100644 src/libraries/libcommon/Makefile
 delete mode 100644 src/libraries/libcommon/README
 delete mode 100644 src/libraries/libcommon/dependencies
 delete mode 100644 src/libraries/libcommon/kom-errno.c
 delete mode 100644 src/libraries/libcommon/misc-parser.c
 delete mode 100644 src/libraries/libcommon/misc-parser.h
 delete mode 100644 src/libraries/libcommon/parser.c
 delete mode 100644 src/libraries/libcommon/parser.h
 delete mode 100644 src/libraries/libmisc/ChangeLog
 delete mode 100644 src/libraries/libmisc/Makefile
 delete mode 100644 src/libraries/libmisc/README
 delete mode 100644 src/libraries/libmisc/dependencies
 delete mode 100644 src/libraries/libmisc/numlist.c
 delete mode 100644 src/libraries/libmisc/numlist.h
 delete mode 100644 src/libraries/libmisc/numlist2.c
 delete mode 100644 src/libraries/libmisc/numlist2.h
 delete mode 100644 src/libraries/libmisc/pom.c
 delete mode 100644 src/libraries/libmisc/pom.h
 delete mode 100644 src/libraries/libmisc/s-collat-tabs.c
 delete mode 100644 src/libraries/libmisc/s-collat-tabs.h
 delete mode 100644 src/libraries/libmisc/s-string.c
 delete mode 100644 src/libraries/libmisc/s-string.h
 delete mode 100755 src/libraries/libmisc/testnumlist
 delete mode 100644 src/libraries/libmisc/testnumlist.c
 delete mode 100644 src/libraries/libmisc/zmalloc.c
 delete mode 100644 src/libraries/libmisc/zmalloc.h

diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index e1791c5c6..000000000
--- a/ChangeLog
+++ /dev/null
@@ -1,382 +0,0 @@
-Tue Mar  5 17:13:25 1991  Per Cederqvist  (ceder at lave)
-
-	* Depend.make: Bytt -MM mot -M, eftersom vi har includefiler inom
-	  <> som {ndrar p} sig.
-
-Thu Feb 14 03:39:16 1991  Linus Tolke  (linus at laila)
-
-	* include/kom-types.h: Lagt till EMPTY_CONF_NO_LIST_i och
-	  EMPTY_CONF_NO_LIST.
-
-Sat Dec 15 20:46:41 1990  Per Cederqvist  (ceder at laila)
-
-	* Depend.make: Jag bytte @\{63\} mot @@@* som {r mer portabelt.
-
-Tue Sep 18 20:46:42 1990  Per Cederqvist  (ceder at lave)
-
-	* get_time(): nytt format. Se services.h.
-
-Thu Sep 13 21:32:41 1990  Per Cederqvist  (ceder at lave)
-
-	* Ny port: 4894. Jag vill kunna k|ra nya ramkomd och gamla ramkomd
-	  p} lave samtidigt...
-
-Tue Aug 28 13:53:36 1990  Per Cederqvist  (ceder at lave)
-
-	* Datafilerna heter nu ramkomd-data-2 och ramkomd-backup-2. De
-	  anv{nds av den nya servern och inneh}ller de nya formaten p}
-	  tider och textstatusar.
-
-	  De gamla filerna ramkomd-data och ramkomd-backup finns
-	  fortfarande kvar och anv{nds av den gamla servern. Personer som
-	  skapas i den kommer inte att finnas i den nya servern...
-
-Sun Aug 26 16:40:58 1990  Per Cederqvist  (ceder at lage)
-
-	* En klient i elisp har p}b|rjats. Den ligger under
-	  2kom/elisp-client/.
-
-	* [ndringar p}g}r i servern. Just nu g}r den inte att k|ra. Jag
-	  byter externt format p} Text_stat och time_t. I forts{ttningen
-	  blir det en struct tm som |verf|rs.
-
-Tue Aug 21 19:27:07 1990  Per Cederqvist  (ceder at lave)
-
-	* get_text() tar nu tv} nya parametrar som anger f|rsta och sista
-	  tecken i texten som man h{mtar. (Normalt torde det l|na sig att
-	  h{mta hela texten p} en g}ng. Det {r nog bara om man k|r |ver
-	  atlantlinan som det kanske blir segt.)
-
-Sat Aug 11 00:31:32 1990  Per Cederqvist  (ceder at lave)
-
-	* Nya funktioner: get_membership(), get_created_texts()
-	  och get_members().
-
-	* Namnbyte: query_unread() heter nu query_read_texts(). S}
-	  sm}ningom kommer jag att skriva en annan query_unread() som
-	  returnerar antalet ol{sta brev en person har.
-
-	* Till slut s} lyckades jag f} allt genom kompilatorn. Det gick }t
-	  en del tid efter alla odokumenterade omorganisationer... Nu {r 
-	  bara fr}gan hur mycket som fungerar i verkligheten...
-
-	* kom-types.c {r flyttad till server/ resp. isc-client/. Det gick inte
-	  att ha det i samma fil l{ngre.
-
-Thu Aug  9 05:20:20 1990  Thomas Bellman  (bellman at laila)
-
-	* Makefilen {nnu mer f|rb{ttrad.  Make depend mycket snyggare,
-	  anv{nder ${MAKE} i st f make direkt.
-
-	* Makefilen i toppdirret f|rb{ttrad, likaledes ig}r.  Make clean i
-	  toppdirret g}r nu ner och g|r make clean i underdirren ocks}.
-	  Diverse andra f|rb{ttringar ocks} gjorda.
-
-	* Lite omorganisationer gjorda ig}r.  En del grejer nedflyttade i
-	  directories f|r att f} ett renare toppdir.
-
-Fri Jul 27 01:21:45 1990  Per Cederqvist  (ceder at lage)
-
-	* Nu {r funktionerna i services.h dokumenterade, i alla fall lite
-	  grann. Kommentarerna finns i server/services.c. De borde v{l
-	  kopieras till services.h ocks}. Vi f}r v{l se om jag hinner det
-	  n}gon g}ng p} denna sida ny}r...
-
-Wed Jul 25 14:35:52 1990  Per Cederqvist  (ceder at lave)
-
-	* F|ljande filer installerade:
-
-		   /usr/local/etc/ramkomd
-		   /usr/local/etc/updateLysKOM
-		   /usr/local/bin/kompost
-		   /usr/local/bin/komlisten
-
-	* ramkomd sparar numera alla texter, m|ten och personer var 15:e
-	  minut. Det {r programmet /usr/local/etc/updateLysKOM som kopplar
-	  upp sig och skickar anropet kom_sync() som vem som helst kan
-	  g|ra. (Man beh|ver inte ens vara inloggad). updateLysKOM startas
-	  fr}n min crontab p} lave. stdout skickas till 2kom/stdout,
-	  stderr till 2kom/stderr. Alla logg-meddelanden kommer till
-	  stderr.
-
-	  Om ramkomd inte {r ig}ng f|rs|ker updateLysKOM starta om
-	  ramkomd. 
-
-	  Data lagras i filerna /usr/local/src/2kom/db/ramkomd-data och
-	  ramkomd-backup.
-
-Tue Jul 24 13:37:03 1990  Per Cederqvist  (ceder at lave)
-
-	* komlisten - ett program f|r att lyssna p} de asynkrona
-	  meddelanden som skickas. 'komlisten lave 5 pw' eller 'komlisten
-	  lave'. Den f|rsta varianten loggar in som person nummer 5 med
-	  l|sen 'pw'. P} s} s{tt f}r den se alla texter som skapas i m|ten
-	  d{r p 5 {r medlem.
-
-Mon Jul 23 04:01:55 1990  Per Cederqvist  (ceder at lave)
-
-	* kompost - ett program f|r att kolla om man har n}gon post i kom.
-	  'kompost lave 5' ser efter hur m}nga ol{sta brev person 5 har p}
-	  det kom som k|r p} lave.
-
-Sun Jul 22 02:17:57 1990  Per Cederqvist  (ceder at lave)
-
-	* I kom/isc-client/ ligger k{llkoden till klient-sidan. Synopsis:
-
-	  #define CLIENT
-	  #include "/usr/local/2kom/services.h"
-
-	  cc main.o ...  -L/usr/local/2kom -lyskom
-
-	* isc b|rjar bli klart (tror jag). Jag har i alla fall lyckats
-	  koppla upp en micro-klient mot servern och skapat en person och
-	  ett m|tet, och l}tit personen g} med i m|tet.
-
-Fri Jul 20 01:00:00 1990  Thomas Bellman  (bellman at laila)
-
-	* Backup tagen av hela LysKOM p} Inge Wallins optiska disk.
-	  F|rhoppningsvis {r det helt i on|dan...
-
-Tue Jul 17 15:19:29 1990  Per Cederqvist  (ceder at lave)
-
-	* kom-types.h: Sista (?) {ndringen i Person-structen:
-	  confs och no_of_confs har slagits ihop till
-	  Membership_list conferences.
-
-	  Nu har vi inga pekare i Person-structen. Alla 'array/listor'
-	  ligger inbakade i en list-typ. Det {r bara f|rvirrande att ha
-	  det p} olika s{tt. Jag har just suttit i ett halvt dygn och
-	  letat felet innan jag kom p} att confs pekade p} en variabel
-	  lista...
-
-Sun Jul 15 04:43:20 1990  Thomas Bellman  (bellman at laila)
-
-	* Eftersom serverskrivarna (l{s Ceder) hade en del underliga
-	  |nskem}l om att f} anv{nda konstiga funktioner som smalloc och
-	  annat f|r minneshantering {ven i str{ngfunktionerna, tvingar jag
-	  dem nu att anropa funktionen s_set_storage_management() f|r att
-	  ange vilka funktioner som ska anv{ndas i st{llet f|r de vanliga.
-	  Tyv{rr m}ste jag sj{lv g|ra det ocks}, men det {r betydligt
-	  snyggare {n det s{tt som det l|stes p} innan.
-
-Fri Jul 13 13:12:23 1990  Per Cederqvist  (ceder at laila)
-
-	* kom-types.h: Jag lade till ett antal bitar i Personal_flags och
-	  Priv_bits f|r framtida bruk.
-
-	* kom-types.h: Person-structen: f{ltet 'texts' har bytt namn och
-	  typ till 'Text_list created_texts'.
-
-	* OMORGANISATION!!!  Saker som l}g i kom-types.h som ska se
-	  olika ut f|r server och klient, {r flyttade fr}n
-	  client/client-types.h resp. server/server-types.h tillbaka till
-	  kom-types.h. client/client-types.h och server/server-types.h {r
-	  borttagna.
-
-Sat Jul  7 07:44:45 1990  Per Cederqvist  (ceder at lave)
-
-	* Det gick inte alls bra. Tydligen m}ste filerna som man cat:ar
-	  ihop utg} fr}n samma directory... :-(
-
-	* TAGS-filerna: I varje directory g|rs en TAGS-fil p} de filer som
-	  finns d{r. I kom:/ g|rs en total TAGS-fil genom att cat:a ihop
-	  dom. Jag {r inte helt s{ker p} att det {r s} smart, men vi f}r
-	  se hur det g}r.
-
-Thu Jul  5 13:13:41 1990  Per Cederqvist  (ceder at laila)
-
-	* services.h: Ny funktion: delete_text(Text_no text_no);
-
-Tue Jul  3 01:12:50 1990  Thomas Bellman  (bellman at laila)
-
-	* services.h:  Ny maskbit f|r get_person_stat(), GETP_READ_TEXTS,
-	  som inneb{r att man vill ha listorna av l{sta texter tillsammans
-	  med medlemskapslistan.  Dessa ska inte skickas med om man inte
-	  explicit ber om det; det finns query_unread().
-
-Wed Jun 27 05:13:01 1990  Thomas Bellman  (bellman at lave)
-
-	* services.h:  Alla funktionsdeklarationer {r omg{rdade av makrot
-	  KOM_ som ser till att funktionerna heter 'kom_foo' p}
-	  klientsidan och 'foo' p} serversidan.  Detta {r beroende p} om
-	  makrona CLIENT respektive SERVER {r definierade.  Detta f|r att
-	  vi ska slippa ha tv} services.h att underh}lla.
-
-Wed Jun  6 00:14:35 1990  Per Cederqvist  (ceder at laila)
-
-	* services.h: [ndrade 'String' till 'const String' i alla 
-	  funktionshuvuden.
-
-	* glue: Directory som inneh}ller klister f|r att klistra ihop en
-	  klient med servern.
-
-	* services.h: Alla funktioner som f|rut hette 'foo' heter nu
-	  'kom_foo'. Anledningen {r att man vill kunna l{nka ihop klienten
-	  och servern och f} ett singeluserkom innan Peter {r klar med
-	  sitt paket... ;-)
-
-Tue May 29 16:17:53 1990  Per Cederqvist  (ceder at lave)
-
-	* services.h {r nu splittrad. server/services.h inneh}ller
-	  funktionerna som de ser ut p} server-sidan, services.h som de
-	  ser ut f|r klienten.
-
-Mon May 28 23:02:24 1990  Thomas Bellman  (bellman at laila)
-
-	* Summarize-Headers:  Shell-script f|r att sammanfatta inneh}llet
-	  i en .h-fil.
-
-	* (Egentligen den 26:e)  FileList inf|rd!  En fil som inneh}ller
-	  beskrivningar p} alla filer i ett dir.  Shell-scriptet
-	  List-Files f|r att lista vilka filer som inte {r beskrivna.
-
-	* s-string.[ch]: Fler funktioner: s_skip_blanks(), s_strtol().
-
-Sat May 26 15:02:48 1990  Per Cederqvist  (ceder at laila)
-
-	* Mailinglist: Ny fil som inneh}ller email-adresser p} alla de som
-	  svarat p} mitt inl{gg i Linus-kom om mailinglistan. Det vore
-	  fint om n}gon skickar ett mail till dom n{r LysKom {r ig}ng...
-	  Tills vidare tar jag p} mig ansvaret f|r utskicken.
-
-Sat May 26 01:36:02 1990  Thomas Bellman  (bellman at laila)
-
-	* s-string.[hc]:  Nya funktioner s_strhead() och s_usr_strhead().
-	  Testar om en str{ng {r en b|rjan p} en annan.
-
-Fri May 25 02:37:55 1990  Per Cederqvist  (ceder at lave)
-
-	* s-string.h: Nytt macro s_empty(str) som returnerar TRUE omm str
-	  {r tom.
-
-	* kom-types.h: Tog bort f{ltet 'Conf_type type' ur
-	  Membership-structen. Det visar sig att det {r b{ttre att cacha
-	  Conf_type tillsammans med namnet.
-
-Tue May 15 17:49:47 1990  Per Cederqvist  (ceder at laila)
-
-	* kom-types.h: Info_type och Info_datum: Ny typ: sent_at.
-	  S} att man vet n{r en text {r skickad n{r den skickas i efterhand.
-
-Mon May 14 08:59:14 1990  Thomas Bellman  (bellman at laila)
-
-	* Biblioteket kom:/ansi-include skapat.  Detta bibliotek
-	  genoms|kes av cpp enligt Makefile (Template).  I biblioteket
-	  finns {n s} l{nge stdio.h, malloc.h och string.h.  Strunta i
-	  filen kom:/ansi.h.  NU ska vi v{l {ntligen slippa ifr}n alla
-	  problem vi haft med include-filer och odeklarerade funktioner.
-	  Fyll g{rna p} med fler generella .h-filer.
-
-Sun May 13 23:12:23 1990  Per Cederqvist  (ceder at lage)
-
-	* kom-errno.[hc]: s} heter den nu.
-
-Sun May 13 23:05:23 1990  Thomas Bellman  (bellman at laila)
-
-	* s-string.[ch]:  Skapad.  V}r egen str{ngtyp (String) samt
-	  funktioner f|r att manipulera dessa.  
-
-Thu May 10 16:27:35 1990  Per Cederqvist  (ceder at lage)
-
-	* config.h:  DEFENSIVE_CHECKS - definierad om vi {r defensiva.
-
-Wed May  9 17:34:31 1990  Linus Tolke  (linus at laila)
-
-	* Person-strukten anv{nder String och Mark_list ist{llet f|r
-	  char * och Mark
-
-	* Jag justerade ordningen f|r filerna som argument till etags.
-	  Jag vill n{mligen n} typen Person p} mindre {n 3 steg!
-
-Tue May  8 19:36:44 1990  Per Cederqvist  (ceder at lage)
-
-	* bool heter numera Bool.
-
-	* Ny typ: Success. Att anv{ndas av alla funktioner som returnerar 
-	  OK eller FAILURE.
-
-Fri May  4 01:25:23 1990  Per Cederqvist  (ceder at lage)
-
-	* services.h: create_conf tar nu {ven Conf_type type som argument.
-	  P} s} vis kan ett hemligt m|te vara hemligt fr}n b|rjan.
-
-Thu May  3 00:56:35 1990  Per Cederqvist  (ceder at lage)
-
-	* kom-types.h: Nytt f{lt i Membership: Conf_type type
-
-	* jin_errno heter numera kom_errno.
-
-	* query_unread_mail heter numera query_unread och {r lite mer
-	  flexibel - man kan fr}ga hur mycket ol{sta en viss person har
-	  i ett visst m|te.
-
-Thu Apr 26 01:52:51 1990  Thomas Bellman  (bellman at lage)
-
-	* P{rm f|r listningar inskaffad.  Gamla listningar av 2kom/ och
-	  2kom/client/ finns insatta.  N{r ni tar ut listningar, s{tt in
-	  dem i p{rmen.  Den ligger i hyllan ovanf|r LLL.  En gul p{rm
-	  m{rkt "LysKOM".  Observera att listningarna som sitter i den
-	  just nu {r inaktuella, p g a....
-
-	* OMORGANISATION!!!  Saker som l}g i kom-types.h som ska se
-	  olika ut f|r server och klient, {r flyttade till
-	  client/client-types.h resp. server/server-types.h.  Samtidigt
-	  togs types.h bort.
-
-	* Listor i Person- och Conference-structarna {r nu egna typer.
-
-	* 'get_person_stat()' och 'get_conf_stat()' tar numera en pekare
-	  till en area d{r resultatet ska l{ggas.  Dessutom skickar man
-	  med en mask som talar om hur mycket information man vill ha.
-
-Wed Apr 25 02:38:32 1990  Thomas Bellman  (bellman at laila)
-
-	* Lade till 'footnote to' och 'footnote in' i misc_info.
-
-	* Skapade 'kom-types.c' som typiskt inneh}ller konstanter och
-	  annat som man tycker borde ligga i en .h-fil, men som inte kan
-	  g|ra det om filen inkluderas i mer {n en k{llkodsfil.
-
-Wed Apr 25 00:49:01 1990  Per Cederqvist  (ceder at laila)
-
-	* services.h: add_member tar numera tv} parametrar f|r att ange
-	  prioritet p} m|tet. add_member anv{nds {ven f|r att {ndra
-	  prioritet p} ett m|te man redan {r med i.
-
-Sat Apr 21 13:52:12 1990  Per Cederqvist  (ceder at lave)
-
-	* Fixade en Makefile som generarar en TAGS-fil som inneh}ller allt
-	  till servern.
-
-	* kom-types.h: Nya privilegiebitar: admin och statistic.
-
-Fri Apr 20 14:09:26 1990  Per Cederqvist  (ceder at lage)
-
-	* kom-types.h: Ny typ Conf_nos.
-
-	* services.h: Ny definition av lookup_name. Nu returneras en lista
-	  med alla konferenser som matchar argumentet.
-
-	* P} beg{ran av Bellman {r nu jin_errno en enum.
-
-Thu Apr 19 02:47:05 1990  Per Cederqvist  (ceder at lave)
-
-	* kom-types.h: Conf_type: nytt f{lt "no_stat".
-		       Sec_bits: ny typ som anger vad en person vill h}lla
-				 hemligt.
-		       Person: nytt f{lt "flags".
-
-Wed Apr 18 00:08:22 1990  Per Cederqvist  (ceder at lage)
-
-	* services.h: get_marks har nu ingen parameter. Man kan bara titta
-		      p} sina egna markeringar.
-
-	* kom-types.h inkluderar nu {ven <stddef.h>
-
-	* Skapade jin_errno.h.
-
-	* services.h: alla funktioner som returnerade en struct
-		      returnerar nu en pekare till motsvarande struct. 
-
-	* Ny funktion i services: query_unread_mail. (Se m 230)
-
diff --git a/FileList b/FileList
deleted file mode 100644
index 55815ac0e..000000000
--- a/FileList
+++ /dev/null
@@ -1,136 +0,0 @@
-(Hey, Emacs, this is a -*- Indented-text -*- file!)
-
-*  ansi-include/
-   Directory containing ANSI-fied header files for the standard
-   libraries.
-
-
-*  ChangeLog
-   Log file where the progressing work and changes are sporadically
-   documented.  You are encouraged to add an entry in this file
-   whenever you change something in this directory.
-
-
-*  client/
-   Directory containing a TTY-based client for LysKOM, very similar to
-   the original KOM program from QZ.
-
-
-*  config.h
-   Configuration parameters for compiling.  Contains among other
-   things all the stupid limits you really want to be without, all the
-   smart limits that has to be there to make it impossible to crash
-   the server, and lots of constants and configuration options.
-
-
-*  debug.h
-   Some #defines for debugging purposes.
-
-
-*  doc/
-   Documentation of LysKOM; both internal and external.  Also some
-   random thoughts members of the development team wanted to write
-   down during development.
-
-
-*  FileList
-   This file, describing all the files.
-
-
-*  kom-errno.c
-   Defines the variable 'kom_errno' and the function 'kom_perror()'.
-   Used for error handling in LysKOM.
-
-
-*  kom-errno.h
-   Defines the type 'Kom_err' and declares the variable 'kom_errno'.
-   The server sets the value of 'kom_errno' when an error occurs.
-   The function 'kom_perror()' is declared.
-
-
-*  kom-types.h
-   Declares the types used by LysKOM.  Here are the types that are
-   common to both the server and the client.  Types that look
-   different to the server and the client, are found in
-   'server/server-types.h' and 'client/client-types.h' respectively.
-
-
-*  ldb/
-   Directory containing the low-level database routines for the LysKOM
-   server.  'ldb' stands for Lyskom DataBase.
-
-
-*  List-Files
-   Shell script to list the files in this directory not documented in
-   the file 'FileList' (the one you are reading now).
-
-
-*  Mailinglist
-   List of mail addresses of people who want to be informed of the
-   progress of LysKOM.
-
-
-*  Makefile
-   Exactly what the name says.
-
-
-*  misc-types.h
-   Miscellaneous types and constants that are useful in many places in
-   LysKOM, but are not very LysKOM-specific.
-
-
-*  s-collat-tables.c
-   Collating tables used for the 's_usr_strcmp()' and
-   's_usr_strhead()' functions in 's-string.h'
-
-
-*  s-collat-tables.h
-   Header file for 's-collat-tables.c'
-
-
-*  s-string.c
-   Routines for manipulating objects of type String as defined in
-   's-string.h'
-
-
-*  s-string.h
-   Header file for 's-string.c'
-   Definies our own string type 'String', and declares the functions
-   in 's-string.c'
-
-
-*  server/
-   Directory containing the LysKOM server, except for the low-level
-   database routines, which for historical reasons are in the separate
-   directory 'ldb/'.
-
-
-*  services.h
-   Declares all the services available from the LysKOM server.
-
-
-*  Summarize-Headers
-   Since we write our .h files with documentation in line, they
-   tend to get rather long, and it gets somewhat difficult to get
-   a quick overview of what functions are declared in the file.
-   This script cuts out all the "unnecessary" information: all
-   comments and all preprocessor lines (starting with #).
-
-
-*  TAGS
-   Tags table for use with Emacs.
-
-
-*  Template
-   Template for automatically generating 'Makefile'.  'Makefile' is
-   updated with the command 'make depend'.  This should be given
-   whenever a change to 'Template' is done, or any new files are
-   added, or any dependecies are changed.  Dependencies for normal C
-   files are generated automatically by this.
-   If 'Makefile' should become garbled, copy 'Template' to 'Makefile'
-   and do a 'make depend'.
-
-
-*  test-services/
-   Directory containing programs to test parts of the server.  Used by
-   ceder, and should not be distributed.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 8377be37d..000000000
--- a/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-TOPDIR = /usr/lyskom
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-SUBDIRS = doc junk scripts src
-
-all: includes libraries binaries
-
-includes:
-	-mkdir $(INCLUDEDIR)
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes)	\
-	done
-
-
-libraries:
-	-mkdir $(LIBDIR)
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making libraries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) libraries)	\
-	done
-
-
-binaries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making binaries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) binaries)	\
-	done
-
-
-install:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making install in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) install)	\
-	done
-
-
-depend: includes
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making depend in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) depend);	\
-	done
-
-
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
diff --git a/doc/Buggar.fixade b/doc/Buggar.fixade
deleted file mode 100644
index 96c413569..000000000
--- a/doc/Buggar.fixade
+++ /dev/null
@@ -1,449 +0,0 @@
-1991-01-13	ceder@Lysator.LiU.SE				000066
-----------------------------------------------------------------------
-]tg{rdat av:	ceder
-Program:	elisp-klient, servern
-Till version:	Servern 0.09
-Orsak:		servern ger en lista tillbaka inneh}llande nollor
-----------------------------------------------------------------------
-Om man f|rs|ker }terse raderade texter s} visas "Texten finns inte."
-Det {r lite jobbigt om man t ex g|r "]terse alla av Pell Pell Pell".
-----------------------------------------------------------------------
-
-
-1991-01-04	Bellman@Lysator.LiU.SE				000064
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	server
-Till version:	0.08	- klart
-----------------------------------------------------------------------
-Ett inl{gg kan kommentera ett annat flera g}nger.
-----------------------------------------------------------------------
-
-
-1990-12-18	Bellman@Lysator.LiU.SE				000062
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	servern
-Till version:	0.07	- klart
-----------------------------------------------------------------------
-Add-recipient tycks alltid s{tta mottagaren som vanlig mottagare {ven
-om man anger cc-recpt.
-----------------------------------------------------------------------
-
-1990-12-09	linus@Lysator.LiU.SE				000058
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	Elisp-klienten
-Till version:	0.18.1	- klart
-Orsak:		LUNATIX
-----------------------------------------------------------------------
-Nanny klarar inte av att skicka paket som {r l{ngre {n 2048 tecken.
-Elisp-klienten borde inte skicka st|rre paket utan borde dela p} l}nga
-texter.
-----------------------------------------------------------------------
-
-
-1990-12-06	linus@lysator.liu.se				000057
-----------------------------------------------------------------------
-]tg{rdas av:	linus@lysator.liu.se
-Program:	Elisp-klienten
-Till version:	0.18	- fixat
-----------------------------------------------------------------------
-Filterna lyskom-init-filter och lyskom-filter gl|mmer i vissa fall att
-s{tta tillbaka current buffer. Detta resulterar i ganska m}nga 
-Buffer is read-only *nanny*
-I synnerhet p} fr}gan {r detta f|rsta g}ngen du k|r lyskom (yes/no): 
-----------------------------------------------------------------------
-
-
-1990-11-20	ceder@lysator.liu.se				000054
-----------------------------------------------------------------------
-]tg{rdas av:	Inge Wallin
-Program:	elisp-klienten
-Till version:	0.18.1
-----------------------------------------------------------------------
-N{r man skriver en presentation av ett m|te markeras den inte (alltid)
-som presentation av servern.
-----------------------------------------------------------------------
-
-
-1990-11-14	linus@lysator.liu.se				000051
-----------------------------------------------------------------------
-]tg{rdas av:	Ingen }tg{rd. Felaktig buggrapport.
-Program:	elisp-klient
-Till version:	
-----------------------------------------------------------------------
-N{r jag l{ser med djup-f|rst flaggan satt och har l{st ett inl{gg som
-har kommentarer s} l{ggs dessa ol{sta kommentarer upp i en egen
-to-read-info.
-N{r jag nu g|r n{sta m|te eller g}r till n}got annat m|te (utan att ha
-l{st slut dessa kommentarer) f|rsvinner denna to-read-info.
-
-Den borde flyttas med till lyskom-to-do-list s} att man kommer in i
-samma kommentarkedja n{sta g}ng man kommer till m|tet.
-----------------------------------------------------------------------
-
-
-1990-11-12	ceder@lysator.liu.se				000050
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	server
-Till version:	fixat /ceder
-----------------------------------------------------------------------
-Text-garbningen tar inte h{nsyn till om inl{gg {r skickade "nyss". Om
-dom {r tillr{ckligt gamla s} raderas de {nd}. Felet ligger i
-garb_text() i text-garb.c.
-----------------------------------------------------------------------
-
- 
-1990-11-11	ceder@lysator.liu.se				000049
-----------------------------------------------------------------------
-]tg{rdas av:	(Ingen }tg{rd. F|rdelen med ett m{nniskol{sbart format
-		 {r stora, och dessutom tj{nar man inte s} mycket.)
-Program:	protokoll
-Till version:	B 
-----------------------------------------------------------------------
-Ca dubbelt s} mycket data |verf|rs via TCP som det man f}r ut ur
-anv{ndarinterfacet. Protokoll B b|r nog anv{nda r}a bytes, och inte
-skicka tal i ASCII.
-----------------------------------------------------------------------
-
- 
-1990-11-11	ceder@lysator.liu.se				000047
-----------------------------------------------------------------------
-]tg{rdas av:	pen
-Program:	server
-Till version:	0.07 -	klart
-Orsak:		Blocking writes.
-----------------------------------------------------------------------
-Servern h{nger sig i flera minuter ibland, utan k{nd orsak. Efter upp
-till 10 minuter hoppar den ig}ng igen av sig sj{lv.
-----------------------------------------------------------------------
-
-
-1990-11-04	ceder@lysator.liu.se				000042
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	elisp-klienten
-Till version:	0.18.1 - klart
-----------------------------------------------------------------------
-Det finns inget "endast"-kommando i elisp-klienten.
-----------------------------------------------------------------------
-
-
-1990-10-28	ceder@lysator.liu.se				000040
-----------------------------------------------------------------------
-]tg{rdas av:	linus@lysator.liu.se
-Program:	elisp-klienten
-Till version:   0.12
-----------------------------------------------------------------------
-Subject: L{gga in en text. BUGFIX
-
-Jag k|r med
-kom-write-texts-in-other-window t
-och har retat mig p} att det alltid l{mnar 2 f|nster ({ven om jag bara
-hade ett).
-
-N{r jag skulle fixa det m{rkte jag att det den gjorde egentligen var
-ganska komplicerat och jag vill h{vda att min l|sning {r snyggare.
-Jag har i koden i detta brev markerat var skillnaderna finns.
-Kod utan markeringarna (och oindenterat) finns i
-~linus/.el/lyskom-write.el.
-
-Dessa {r min tv} funktioner att ers{tta dem i lyskom.el:
-
-  (defun lyskom-edit-text (proc misc-list subject &optional handler &rest data)
-    "Edit a text in a new buffer.
-  PROC is the associated process.
-  MISC-LIST is the default misc-list.
-  SUBJECT is subject (a string).
-  HANDLER is a function to call when the text has been created.
-  DATA is extra data to send to the function. HANDLER is called with
-	  (apply HANDLER text-no DATA)
-  where text-no is the number of the text."
-    (setq lyskom-is-writing t)
-    (lyskom-end-of-command)
-    (let
-	((buffer (generate-new-buffer
-		   (concat (buffer-name (process-buffer proc)) "-edit")))
-	 (config (current-window-configuration)))
-      (cond
-       (kom-write-texts-in-other-window
-	(switch-to-buffer-other-window buffer))
-       (t (switch-to-buffer buffer)))
-      (lyskom-edit-mode)
-      (setq lyskom-proc proc)
-      (make-local-variable 'lyskom-edit-handler)
-      (make-local-variable 'lyskom-edit-handler-data)
->     (make-local-variable 'lyskom-edit-return-to-configuration)
-      (setq lyskom-edit-handler handler)
-      (setq lyskom-edit-handler-data data)
->     (setq lyskom-edit-return-to-configuration config)
-      (lyskom-edit-insert-miscs misc-list subject)
-      (message "Tryck C-c C-c f|r att skicka in texten."))
-    (set-buffer (process-buffer lyskom-proc)))
-
-  (defun lyskom-create-text-handler (text-no edit-buffer)
-    "Handle an attempt to write a text."
-    (lyskom-tell-server "")
-    (cond
-     ((null text-no)
-      (lyskom-insert
-       (format "\nTexten kunde ej skapas. Felkod: %d.\n" lyskom-errno))
-      (ding)
-      (message "Texten kunde ej skapas. Felkod: %d." lyskom-errno))
-     (t
-      (lyskom-insert (format "\nText nummer %d skapad.\n" text-no))
-
-      ;; Immediately mark the text as read if kom-created-texts-are-read is set.
-
-      (cond
-       (kom-created-texts-are-read
-	(lyskom-is-read text-no)
-	(initiate-get-text-stat 'background 'lyskom-mark-as-read
-				text-no)
-	(lyskom-run 'background 'set 'lyskom-dont-change-prompt nil)))
-
-
-      (set-buffer edit-buffer)		;Need local variables.
-
->     ;; Select the old configuration.
-
->     (set-window-configuration lyskom-edit-return-to-configuration)
-
-      ;; Apply handler.
-
-      (if lyskom-edit-handler
-	  (let ((hnd lyskom-edit-handler)
-		(dta lyskom-edit-handler-data))
-	    (set-buffer (process-buffer lyskom-proc))
-	    (apply hnd text-no dta)))
-      (set-buffer (process-buffer lyskom-proc))
-
-      ;; Kill the edit-buffer.
-
-      (kill-buffer edit-buffer)))
-    (lyskom-end-of-command))
-----------------------------------------------------------------------
-
-
-1990-10-25	mattias@lysator.liu.se				000036
-----------------------------------------------------------------------
-]tg{rdas av:	???
-Program:	elispklienten och servern???
-Till version:	???
-----------------------------------------------------------------------
-Tomma texter fungerar inte s} bra.
-----------------------------------------------------------------------
-
-
-1990-10-21	ceder@lysator.liu.se				000027
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	server
-Till version:	klart sedan l{nge
-----------------------------------------------------------------------
-En person som {r raderad raderas inte helt. Man kan fortfarande skapa
-texter med personen som mottagare. De f}r ett lokalt nummer i m|tet.
-Suck. Allvarligt!
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000018
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elisp-klient
-Till version:	klart sedan l{nge
-----------------------------------------------------------------------
-Det g}r inte att l{sa i kommentarsordning. "}k" {r inte generellt.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000017
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	server
-Till version:	6	- klart
-----------------------------------------------------------------------
-Det g}r inte att markera texter. Det fattas kod i servern.
-----------------------------------------------------------------------
-
-
-1990-10-20	ceder@lysator.liu.se				000016
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	server
-Till version:	6	- klart
-----------------------------------------------------------------------
-Gamla inl{gg raderas aldrig. B|r }tg{rdas snarast!
-----------------------------------------------------------------------
-
-
-1990-10-20	ceder@lysator.liu.se				000015
-----------------------------------------------------------------------
-]tg{rdas av:	linus??
-Program:	server
-Till version:	???
-----------------------------------------------------------------------
-Asynkrona meddelanden {r inte f{rdigimplementerat.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000012
-----------------------------------------------------------------------
-]tg{rdas av:	Linus
-Program:	elisp-klient
-Till version:	0.16	- klart
-----------------------------------------------------------------------
-Elisp-klienten borde skriva ut "Kommentar till text 289 av
-<f|rfattare>". "Kommentar i text 435 av <f|rfattare>" borde skrivas
-efter texten.
-----------------------------------------------------------------------
-
-
-1990-10-20	ceder@lysator.liu.se				000011
-----------------------------------------------------------------------
-]tg{rdas av:	Inge Wallin
-Program:	elisp-klient
-Till version:	???
-----------------------------------------------------------------------
-Elisp-klienten borde skriva ut vilket kommando den h}ller p} att g|ra
-s} fort man har startat det.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000009
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	server
-Till version:	0.04	- klart
-Program:	elisp-klient
-Till version:	0.10	- klart
-Program:	libyskom.a
-Till version:	()	- klart
-----------------------------------------------------------------------
-who_is_on borde s{nda med en connection.
-----------------------------------------------------------------------
-
-
-1990-10-20	ceder@lysator.liu.se				000008
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	server
-Till version:	0.04	- klart
-Program:	elisp-klient
-Till version:	0.10	- klart
-Program:	libyskom.a
-Till version:	()	- klart
-Program:	tty-klient (}tg{rdas av Bellman)
-Till version:
-----------------------------------------------------------------------
-get_conf_stat och get_person_stat beh|ver inte flaggan 'mask' l{ngre.
-Den b|r tas bort.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	Bellman@Lysator.LiU.SE				000007
-----------------------------------------------------------------------
-]tg{rdas av:	Bellman
-Program:	elisp-klient
-Till version:	0.10	- klart
-----------------------------------------------------------------------
-Elisp-klienten: N{r man h}ller p} att skriva en text, borde den
-tycka att raden "--- Skriv texten nedanf|r denna rad ---" skiljer
-tv} stycken }t.  Denna str{ng b|r f | vara en variabel, inte en
-magisk str{ng mitt inne i k{llkoden.
-----------------------------------------------------------------------
-
-
-1990-10-20	Bellman@Lysator.LiU.SE				000006
-----------------------------------------------------------------------
-]tg{rdas av:	Bellman
-Program:	elisp-klient
-Till version:	0.10	- klart
-----------------------------------------------------------------------
-Elisp-klienten: Implementera "personligt (svar)".  Borde vara
-ganska enkelt.
-----------------------------------------------------------------------
-
-
-1990-10-20	Bellman@Lysator.LiU.SE				000005
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	elisp-klient
-Till version:	klart sedan l{nge
-----------------------------------------------------------------------
-Elisp-klienten:  f|r att ange att man vill kommentera ett annat
-inl{gg {n det man nyss l{st, anger man inl{ggsnumret som argument
-med C-u till k.  Dvs n}got s}nt h{r:
-	(defun kom-write-comment (&optional arg)
-	   (interactive "P")
-	   (let ((text-to-comment (and arg lyskom-current-text)))
-		...))
-eller vad variablerna nu heter.
-----------------------------------------------------------------------
-
-
-1990-10-19	ingwa@isy.liu.se				000003
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	elisp-klient
-Till version:   0.11	- klart
-----------------------------------------------------------------------
-Elisp-klienten b|r byta prompt n{r man st}r och v{ntar, fr}n
-"(Se) tiden" till "(G} till) n{sta m|te"
-----------------------------------------------------------------------
-
-
-1990-10-19	Tommy Persson @ LysKOM				000002
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	elisp-klient
-Till version:	0.10 - klart
-----------------------------------------------------------------------
-703 1990-10-19 11:00  /20 rader/ Tommy Persson
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <41>
-[rende: ]terse kommenterad
---------------------------------------------------------
-
-H{r kommer ett }terse kommenterat kommando:
-
-(defun kom-view-commented-text ()
-  (interactive)
-  (let ((text-no nil))
-    (save-excursion
-      (re-search-backward "/.*rader/" nil t)
-      (if (search-forward "Kommentar till text" nil t)
-	  (setq text-no (read
-			 (buffer-substring (point)
-					   (save-excursion
-					     (forward-word 1)
-					     (point)))))))
-    (if text-no
-	(progn
-	  (lyskom-start-of-command)
-	  (lyskom-insert (format "]terse text nummer %d.\n" text-no))
-	  (lyskom-view-text text-no)))))
-
-(703) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-1990-10-18	Aronsson@Lysator.LiU.SE				000001
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	server
-Till version:	0.04	- klart
-Orsak:		Aronsson var inloggad p} flera sessioner. N{r han
-		raderade sig sj{lv skulle han ha blivit utloggad fr}n
-		alla sessioner.
-----------------------------------------------------------------------
-Jag k|rde r} telnet. Skrev kommandot 11 11 (delete-conf) 8 (Lars
-Aronsson). Detta var i o.f.s. ett misstag, jag hade t{nkt g|ra 13
-(get-conf-stat). Men f|ljden blev att hela servern kraschade.
-----------------------------------------------------------------------
diff --git a/doc/Bugrapporter b/doc/Bugrapporter
deleted file mode 100644
index ec38dd74c..000000000
--- a/doc/Bugrapporter
+++ /dev/null
@@ -1,775 +0,0 @@
-Filen inneh}ller bugrapporter, ideer och andra f|rslag till
-f|rb{ttringar p} LysKOM och dess ing}ende program. L{gg nya buggar
-f|rst i filen.  En mall f|r en buggrapport kan s{ttas in med C-x g m.
-
-
-1991-03-03	ceder@lysator.liu.se				000072
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	server
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-isc_getnextevent borde anv{nda ett write-set i select(). Som det {r nu
-kan en klient f} v{nta 2 sekunder p} data.
-----------------------------------------------------------------------
-
-1991-02-28	Bellman@Lysator.LiU.Se				000071
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elisp-klient
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-Version 0.28.  Ibland f}r man prompten "L{sa n{sta text", trots att
-man borde f}tt "G} till n{sta m|te" f|ljt av "L{sa n{sta text".
-----------------------------------------------------------------------
-
-
-
-1991-02-15	ceder@Lysator.LiU.SE				000070
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	server
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-add_recipient med m}nga flera skickar ej ut n}got asynkront meddelande.
-----------------------------------------------------------------------
-
-
-
-1991-02-15	ceder@Lysator.LiU.SE				000069
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	server
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-Det ska, genom att g|ra g|ra add_recipient, g} att {ndra en recpt till
-cc_recpt (och inte bara }t andra h}llet). En mottagare ska, precis som
-nu, 	inte f} vara b}de recpt och cc_recpt.
-----------------------------------------------------------------------
-
-1991-02-08	ceder@Lysator.LiU.SE				000068
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	server
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-kom_info, som bl a inneh}ller motd_of_lyskom, sparas inte. N{r man
-startar om servern {r all info gl|md.
-----------------------------------------------------------------------
-
-1991-02-05	linus@Lysator.LiU.SE				000067
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elispklienten och emacs 18.56
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-O{ndlig loop n}gonstans n{r filterfunktionerna anv{nds f}r Emacs 18.56
-att h{nga sig h}rt. (G}r ej att bryta med C-G utan forts{tter att k|ra
-n{r jag svara jag p} fr}gan continuing?
-
-Jag har m{rkt det n{r 
-- Jag skapade ett nytt m|te (fick inte skriva presentation f|r den
-  h{ngde sig innan.)
-- N{r jag skrev ett inl{gg och var i en annan buffert innan den fick
-  svar.
-----------------------------------------------------------------------
-
-1991-02-01	ceder@Lysator.LiU.SE				000066
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	server
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-Det finns ingen gr{ns p} hur mycket man kan lagra i en utk| i
-isc-rutinerna.
-----------------------------------------------------------------------
-
-
-1991-01-10	Bellman@Lysator.LiU.SE				000065
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	server
-Till version:	
-----------------------------------------------------------------------
-Info-strukturen b|r {ven inneh}lla hur l{nge servern varit uppe, och
-annat sm}tt och gott som kan vara kul att veta.
-----------------------------------------------------------------------
-
-
-
-1991-01-03	ceder@Lysator.LiU.SE				000063
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	servern? speciell demon?
-Till version:	
-Orsak:		Kultv{rde.
-----------------------------------------------------------------------
-Det kunde vara skoj att kunna g|ra "finger @lyskom.lysator.liu.se" och
-f} n}got i stil med:
-
-@finger @lyskom.lysator.liu.se
-
- Wed  2-Jan-91 15:27:08  Up 718:34:00
- 3+2 Jobs   Load av   0.20   0.07   0.00
-
- No LysKOM administrator in attendance
-
- Job  Line Activity  User               Where
-  22    p1  Reading  ceder              LysKOM internals
-  23    p2  Waiting  noppe              Inl{gg }t mig
-  24    p3  Reading  pell               Hackers (@) Nanny
-
-   1   172  LDB      OPERATOR
-   2   173  KOMSTAT  Statistikid f|r statistikinsamling
-
-(Pell Pell Pell kom med den exakta utformningen).
-----------------------------------------------------------------------
-
-
-1990-12-13	Linus@Lysator.LiU.SE				000061
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elisp-klienten
-Till version:	
-Orsak:		Emacs g|r inte uppdatering av minibufferten efter
-		sit-for tiden n{r den skrivit i message-arean.
-----------------------------------------------------------------------
-Asynkrona meddelanden skriver |ver minibufferten n{r man {r i den.
-Borde kunna stoppas n{r man h}ller p} i den bufferten.
------- fotnot av ceder: -----
-Det {r kanske b{ttre att l}ta klienten l{sa i den vanliga bufferten i
-st{llet f|r i minibufferten. Nackdelen {r att det kanske blir sv}rt
-att fixa completion.
-----------------------------------------------------------------------
-
-
-1990-12-13	Linus@Lysator.LiU.SE				000060
-----------------------------------------------------------------------
-]tg{rdas av:	Inge Wallin,  ISY
-Program:	elisp-klienten
-Till version:	0.18.5
-Orsak:		] k {r en v{ldigt enkel funktion.
-----------------------------------------------------------------------
-} k borde g|ra }terse det kommenterade, samt alla inl{gg som detta
-inl{gg {r fotnot till.
-----------------------------------------------------------------------
-
-1990-12-10	ceder@lysator.liu.se				000059
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	alla
-Till version:	
-----------------------------------------------------------------------
-Det borde finnas ett s{tt att markera en region av en text.
-----------------------------------------------------------------------
-
-1990-11-25	ceder@lysator.liu.se				000056
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	server
-Till version:	
-----------------------------------------------------------------------
-Det b|r finnas n}got s{tta att st{nga av asynkrona meddelanden (t ex
-n{r man k|r r}tt).
-----------------------------------------------------------------------
-
-
-1990-11-23	ceder@lysator.liu.se				000055
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	servern
-Till version:	
-----------------------------------------------------------------------
-Det b|r finnas en gr{ns p} hur m}nga inl{gg man f}r markera som l{sta
-i ett m|te, f|r att f|rhinda att n}gon f}r en alltf|r stor lista.
-Denna bugg har l}g prioritet.
---
-Fotnot (1991-01-24): N{r Inges paket f|r Numlist {r klart kommer det
-h{r inte att spela n}gon roll. Denna bugg kr{ver ingen annan }tg{rd.
-----------------------------------------------------------------------
-
-1990-11-14	ceder@lysator.liu.se				000053
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	server
-Till version:	
-----------------------------------------------------------------------
-Difftime anv{nds inte alltid n{r den borde anv{ndas. Det finns st{llen
-d{r '-' anv{nds f|r att f} fram en diff i sekunder.
-----------------------------------------------------------------------
-
-
-1990-11-14	ceder@lysator.liu.se				000052
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	server
-Till version:	
-----------------------------------------------------------------------
-cached_get_garb_nice har ingenstans att h{mta garb_nice fr}n. Den
-cacheas inte. I ramkomd {r det ju inget problem...
-----------------------------------------------------------------------
-
-
-1990-11-11	ceder@lysator.liu.se				000048
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	server eller elisp-klient
-Till version:
-----------------------------------------------------------------------
-N{r servern g}r ner kan det h{nda att man f}r l{sa om texter som man
-har skrivit sj{lv under den sista sessionen. Det tyder p} en bugg -
-sparas inte det ordentligt? Eller {r det klienten som g|r fel? Texten
-markeras ju som l{st s} fort man skapar den. Eftersom texten har
-hunnit sparas p} disk s} borde info om att man har l{st dom ocks} vara
-sparat...
-----------------------------------------------------------------------
-
-
-1990-11-11	pen@lysator.liu.se				000047
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-client
-Till version:
-----------------------------------------------------------------------
-Asyncrona meddelanden kan komma "f|r tidigt" och f|rst|ra. Om en text
-skapas under inloggningssekvensen kan det h{nda att man f}r l{sa den
-tv} g}nger.
-----------------------------------------------------------------------
-
-
-1990-11-11	bellman@lysator.liu.se				000046
-----------------------------------------------------------------------
-]tg{rdas av:	Linus Tolke Y
-Program:	elisp-client
-Till version:	0.27
-Orsak:		Macrot lyskom-traverse tilldelade elementet det
-		snurrade med.
-----------------------------------------------------------------------
-Om 3 {r en fotnot till text 2 som {r en kommentar till text 1 s} f}r
-man l{sa dom i ordning 1, 3, 2, fast det ju borde vara 1, 2, 3.
-----------------------------------------------------------------------
-
-
-
-1990-11-04	ceder@lysator.liu.se				000045
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	servern
-Till version:
-----------------------------------------------------------------------
-Servern censurerar inte de asyncrona meddelandena tillr{ckligt. Bl a 
-s} talar den om n{r man g}r till ett skyddat m|te. (tror jag)
-----------------------------------------------------------------------
-
-
-1990-11-04	ceder@lysator.liu.se				000044
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klienten
-Till version:
-----------------------------------------------------------------------
-N{r man ska ange siffra i en minibuffert s} kommer den ibland till fel 
-buffert. Det finns {ven andra mystiska fel vad g{ller val av buffert. 
-Man f}r till exempel inte byta buffert n{r man h}ller p} att l{gga in 
-en text.
-----------------------------------------------------------------------
-
-
-1990-11-04	ceder@lysator.liu.se				000043
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klienten
-Till version:
-----------------------------------------------------------------------
-Fel syntaxtabell n{r man skriver inl{gg.
----------
-Linus: Delvis avhj{lp av att man from version 0.12 kan v{lja vilken
-mode som klienten anv{nder sig av innan den s{tter de speciella
-lyskom-editflaggorna (lyskom-edit-mode-mode-hook).
-----------------------------------------------------------------------
-
-
-1990-10-31	ceder@lysator.liu.se				000041
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klienten
-Till version:
-----------------------------------------------------------------------
-N{r man har skrivit en text byter klienten ut current buffert mot
-LysKOM, och inte Lyskom-edit-bufferten.
-kom-write-texts-in-other-window {r nil.
-----------
-Sedan version 0.12 s} kommer bufferten ih}g vilken
-`window-configuration' som g{llde innan man startade editeringen av
-texten. 
-----------------------------------------------------------------------
-
-
-1990-10-28	ceder@lysator.liu.se				000039
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klienten
-Till version:
-----------------------------------------------------------------------
-Om man har kom-write-texts-in-other-window t s} kommer det inte n}gon
-ny prompt n{r man skickar in texten.
-----------------------------------------------------------------------
-
-
-1990-10-28	Aronsson@Lysator.LiU.SE				000038
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klienten
-Till version:
-----------------------------------------------------------------------
-1641 1990-10-28 01:14  /9 rader/ Lars Aronsson
-Kommentar till text 1612
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <105>
-[rende: Version 0.11b
---------------------------------------------------------
-En ide {r denna: S} l{nge allt g}r bra k|r man Remote Procedure Calls
-mot servern: Man skickar en fr}ga och inv{ntar ett svar. Hela tiden
-k|r man med ett och samma fr}ge-ID (det d{r f|rsta numret). Det kan
-man g|ra eftersom man ju inv{ntar svaret innan man skickar n{sta
-fr}ga. N{r sedan anv{ndaren trycker R, s} |kar man fr}ge-ID med ett
-och l{gger sig i topp-loopen. Nu skickar man en ny fr}ga (med nya
-fr}ge-ID och som resultat av ett nytt kommando). Om det uteblivna
-svaret p} en gammal fr}ga (f|re R) dyker upp, s} har det fel fr}ge-ID
-och man ignorerar det (men l{ser bort hela - man vet ju datatypen).
-(1641) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-
-1990-10-25	ceder@lysator.liu.se				000037
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klienten
-Till version:
-----------------------------------------------------------------------
-Det finns }tskilliga st{llen d{r det inte kontrolleras att man inte
-f|rs|ker g|ra n}got med en *-stat som {r nil.
-----------------------------------------------------------------------
-
-
-1990-10-22	pell@isy.liu.se					000035
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-1371 1990-10-23 20:50  /3 rader/ Pell Pell Pell
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <82>
-[rende: V{nta
---------------------------------------------------------
-N{r man ligger i V{nta- och har kom i en icke-visad buffert och det kommer
-ett nytt inl{gg, s} s{tts point till n}gon slumpvis plats i bufferten s}
-att man alltid f}r b|rja med M-> innan man kan l{sa det nya inl{gget...  /PPP
-(1371) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-
-1990-10-22	linus@Lysator.LiU.SE				000034
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-1383 1990-10-23 23:03  /16 rader/ Linus Tolke Y
-Mottagare: MUD (erfarenhetsutbyte) <2>
-[rende: Mitt hack f|r att fixa s} att alla kan se vilket inl{gg jag kommenterar.
---------------------------------------------------------
-(defun lyskom-write-comment (text-stat subject)
-  "Write a comment to the text associated with TEXT-STAT."
-  (lyskom-start-of-command)
-  (cond
-   ((null text-stat)
-    (lyskom-insert "Jag f|rst}r inte vilken text du vill kommentera.")
-    (lyskom-end-of-command))
-   (t
-    (lyskom-tell-server
-     (concat "Skriver kommentar till inl{gg "
-	     (text-stat->text-no text-stat)
-	     "."))
-    (lyskom-edit-text lyskom-proc
-		      (lyskom-comment-recipients text-stat)
-		      subject))))
-
-(1383) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-
-1990-10-22	Flera olika					000033
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	Allm{nna funderingar
-Till version:   B
-----------------------------------------------------------------------
-1385 1990-10-23 23:07  /21 rader/ Lars Aronsson
-Kommentar till text 1369
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <83>
-[rende: Lagringsformat p} texter
---------------------------------------------------------
-Ni har gjort en del antaganden "servern bryr sig inte om...", vilket
-s{kert l}ter riktigt i era |ron. Visst skall det vara s}, visst skall
-servern klara att lagra nulltecken och annat. Men det finns flera
-niv}er i en server. Lite h|gre upp {n den rena lagringen kommer
-tillhandah}llandet av tj{nsten att lagra meddelanden mellan m{nniskor.
-
-Det {r visserligen inte n|dv{ndigt att samma personer tillhandah}ller
-tj{nsten som har skrivit programmet, om n}gon tar upp en LysKOM server
-p} KTH f|r att |verf|ra bin{ra Commodore 64 program, s}
-tillhandah}ller de ju en annan tj{nst {n den p} Laila LysKOM. Men jag
-tror att det blir mest praktiskt om ni programmerare har hand {ven om
-tj{nsten h{r p} Laila.
-
-[ven om deltagarna i Laila LysKOM har olika utrustning, s} m}ste ett
-meddelande kunna n} alla och d} m}ste det finnas regler f|r hur det
-lagrade skall tolkas. Som nu debatten om ISO 8859 (8 bitar) eller ISO
-646 (7 bitar).  Om jag vill skicka ett meddelande till andra m{niskor,
-vill jag ju vara s{ker p} att det lagras s} att de kan l{sa det. Om
-jag vill lagra bokstaven Q s} m}ste ni best{mma vad jag skall skicka.
-Det enklaste s{ttet {r att h{nvisa till en standard. Det ligger b{st i
-tiden (ni skriver ju i moderna ANSI-C) att d} v{lja ISO 8859-1.
-(1385) -----------------------------------------------------
-
-Kommentar till text 1369
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <84>
-Kommentar i text 1394
-Kommentar i text 1413
-[rende: Lagringsformat p} texter
---------------------------------------------------------
-Man skulle kunna lagra in info-byte f|r varje text som talar om vilken
-teckenupps{ttning texten {r skriven i. (0 = SW-ASCII, 1 = US-ASCII,
-2 = ISO n}nting), som klienten sedan f}r med varje text. Eller?
-
-(1391) -----------------------------------------------------
-
-1413 1990-10-24 01:55  /4 rader/ Lars Aronsson
-Kommentar till text 1391
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <86>
-Kommentar i text 1414
-[rende: Lagringsformat p} texter
---------------------------------------------------------
-Nej, pen, det {r f|r jobbigt. Klienten blir f|r stor. B{ttre att
-"protokoll B" betyder 7-bit svensk ISO 646 och "protokoll A" betyder
-8-bit ISO 8859-1, men att alla texter lagras i ISO 8859-1.
-Men jag ser inget behov av att k|ra annat {n ISO 8859-1 rakt |ver.
-(1413) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-1990-10-22	pell@isy.liu.se					000032
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-1232 1990-10-22 13:16  /3 rader/ Pell Pell Pell
-Kommentar till text 1168
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <72>
-[rende: Avbrott: hur ska det fungera?
---------------------------------------------------------
-H|gt nummer h|g prioritet! D} har jag fel prioritet p} alla mina m|ten...
-Fast oftast orkade jag inte fundera p} det n{r jag fick fr}gan. Sn{lla
-ceder, g|r defaultsvar till de b}da fr}gorna om prioritet och placering. /PPP
-(1232) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-
-1990-10-22	Mange Nilsson @ LysKOM				000031
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-1189 1990-10-22 09:24  /11 rader/ Mange Nilsson (hmd)
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <69>
-[rende: Vad h{nder?
---------------------------------------------------------
-Med j{mna mellanrum nu under morgonen s} har jag f}tt:
-	Symbol's function definition is void: nil
-efter att jag l{st en text. N{r man sen trycker p} RETURN s} kommer:
-	lyskom-format-object: no support for object
-Fixas visserligen snabbt med ett kom-recover, men n}t fel {r det...
-
-H-Maneg
-(1189) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-
-1990-10-22	Mattias@Lysator.LiU.SE				000030
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	Elisp-klient
-Till version:
-----------------------------------------------------------------------
-1162 1990-10-22 02:55  /3 rader/ Mattias Olofsson
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <64>
-Kommentar i text 1178
-[rende: Bug?
---------------------------------------------------------
- Om man skickar en tom str{ng (0H r}tt) som text i ett inl{gg s}
-skrivs 'Det finns ingen s}dan text.' ut p} {renderaden i
-elispklienten. Ska det vara s}?			/mo
-(1162) -----------------------------------------------------
-
-1178 1990-10-22 06:13  /2 rader/ Mattias Olofsson
-Kommentar till text 1162
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <68>
-[rende: Bug?
---------------------------------------------------------
- Dessutom markeras inte brevet som l{st, jag f}r l{sa det varje
-g}ng jag startar elispklienten.			/mo
-(1178) -----------------------------------------------------
-
-1314 1990-10-23 04:38  /2 rader/ Mattias Olofsson
-Kommentar till text 1178
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <75>
-[rende: Bug?
---------------------------------------------------------
- ...dessutom f}r jag l{sa det varje g}ng jag har g}tt med i ett nytt
-m|te. 						/mo
-(1314) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-
-1990-10-22	ingwa@isy.liu.se				000029
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	Elisp-klient
-Till version:
-----------------------------------------------------------------------
-1167 1990-10-22 03:59  /4 rader/ Inge Wallin
-Mottagare: LysKOM Elisp-klient; buggar, nyheter och annat. <66>
-[rende: Tr}kig sak
---------------------------------------------------------
-Om man har haft en emacs stoppad l{nge med lyskom ig}ng s} f}r man
-"text n skapad!" d{r olika n kan vara ganska m}nga. Klienten borde
-inte skriva ut mer {n en "text n skapad!" n{r man v{ntar.
-
-(1167) -----------------------------------------------------
-----------------------------------------------------------------------
-
-
-
-1990-10-21	Bellman@Lysator.LiU.SE				000028
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	Elisp-klient
-Till version:
-----------------------------------------------------------------------
-Om man ger anger en text som inte finns till "k" eller "p", f}r
-man till svar "Wrong type argument: cons, nil".  Inte s} snyggt.
-----------------------------------------------------------------------
-
-
-
-1990-10-21	ceder@lysator.liu.se				000026
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-M|ten med h|g prioritet avbryter inte m|ten med l}g prioritet i elisp-
-klienten.
-----------------------------------------------------------------------
-
-
-
-1990-10-21	ceder@lysator.liu.se				000025
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-Klienten h{mtar samma m|tesstatus flera g}nger i rad i bland.
-L|sning: en lista som h}ller reda p} vilka conf-stats man fr}gat efter
-utan att f} svar. Om den finns p} listan s} k|r man en (lyskom-run
-'cache-get-conf-stat conf-no) i st{llet f|r att fr}ga servern.
-----------------------------------------------------------------------
-
-
-
-1990-10-21	ceder@lysator.liu.se				000024
-----------------------------------------------------------------------
-]tg{rdas av:	ceder
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-Prefetchningen funkar inte s} bra ihop med kommentarl{sningen. Det g}r
-att g|ra b{ttre. Conf-stat f|r f|rfattare o. dy. borde prefetchas.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	Aronsson@Lysator.LiU.SE				000023
-----------------------------------------------------------------------
-]tg{rdas av:	 
-Program:	Protokollspec (+alla program)
-Till version:	B
-----------------------------------------------------------------------
-En del prylar i protokoll A g|r att det {r sv}rt att effektivt tolka
-det som trillar in |ver linan. T.ex. kan man inte avg|ra om det {r en
-INTEGER, en HOLLERITH eller en ARRAY som kommer utan att titta framf|r
-sig. F|resl}s att HOLLERITH anges H4Htext samt att antal-element och
-"{" byter plats f|r ARRAY.
-
-Typen BITSTRING borde kunna ers{ttas med en INTEGER d{r bitarna kodas
-+1, +2, +4, +8, ... S} som den h{r get_xyz_stat-masken fungerade.
-Nackdel: Sv}rare att handkoda bitstr{ngar, men skall vi vara s}
-beroende av handkodning?
-
-Om jag med protokoll A vill veta vem som organiserar ett m|te, m}ste
-jag best{lla hela get-conf-stat. Troligen har min klient en generell
-rutin som mappar till protokollelementen och jag lagrar (l{s:
-mallocerar) d{rf|r hela datastrukturen som kommer i svaret. Det kunde
-vara beh{ndigt med fler, sm} funktioner som i princip returnerade ett
-v{rde var.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	Aronsson@Lysator.LiU.SE				000022
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	Protokollspec (+alla program)
-Till version:	A++
-----------------------------------------------------------------------
-add-recipient-params: conference och type borde byta plats och d{rmed
-bli en Misc-Info.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	Aronsson@Lysator.LiU.SE				000021
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	Protokollspec (+alla program)
-Till version:	A++
-----------------------------------------------------------------------
-Conf-List borde vara en ARRAY { Conf-No; Conf-Type }. Inte den hybrid
-den {r idag. Se anm{rkning i protokollspecen.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	Aronsson@Lysator.LiU.SE				000021
-----------------------------------------------------------------------
-]tg{rdas av:	
-----------------------------------------------------------------------
-Mattias Olofsson hj{lper mig korrigera specen av protokoll A. Han b|r
-bli medlem i gruppen kom.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	Aronsson@Lysator.LiU.SE				000020
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	Protokollspec (+alla program)
-Till version:	A++
-----------------------------------------------------------------------
-Bak}tkompatibilitet {r viktigt. Det finns redan en klient p} Chalmers
-och en p} IDA, kanske en p} ISY. Att {ndra syntax p} protokoll A kan
-skapa problem. B{ttre i s} fall att skapa nya funktioner (med h|gre
-anropsnummer) som ers{tter de gamla och l}ta servern klara {ven de
-gamla. T.ex. masken "255" skadar ju inte, den tar inte mycket plats.
-Men om den {ndras och Johan Andersson Chalmers m}ste FTP:a en ny
-klient, s} kanske han tr|ttnar helt.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000019
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elisp-klient
-Till version:	
-----------------------------------------------------------------------
-Klienten fr}gar aldrig efter server-info.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000014
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	server
-Till version:	
-----------------------------------------------------------------------
-Fixa s{kerhetsbuggen vid read_texts et c. Det b|r vara s} att man inte
-f}r veta mappningen s} ofta som nu. Vilka texter som {r l{sta b|r
-ocks} vara mer hemligt. Ett nytt anrop, query_unread(), b|r inf|ras.
-Resultatet {r antalet ol{sat brev och _kanske_ Local_text_no f|r det
-h|gsta nummret. 
-
-(Det var l{nge sen jag skrev det h{r, och jag minns inte riktigt vad
-jag menar, men man borde nog titta p} det h{r s} sm}ningom).
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000013
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elisp-klient
-Till version:	
-----------------------------------------------------------------------
-Det borde finnas ett s{tt att uttr{da och om-prioritera sina m|ten.
-Till exempel en ny mode i ett eget f|nster, typ dired.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	ceder@lysator.liu.se				000010
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	elisp-klient
-Till version:	
-----------------------------------------------------------------------
-Elisp-klienten borde inte scrolla s} mycket n{r man k|r fr}n en
-l}ngsam terminal.
-----------------------------------------------------------------------
-
-
-
-1990-10-20	Bellman@Lysator.LiU.SE				000004
-----------------------------------------------------------------------
-]tg{rdas av:
-Program:	elisp-klient
-Till version:
-----------------------------------------------------------------------
-Kommano f|r att spara en text p} fil i elisp-klienten vore
-l{mpligt.  Om man ger ett numeriskt argument, ska man spara det
-inl{gget, annars det senast visade.
-----------------------------------------------------------------------
-
-
-
-
-Local Variables:
-mode:swedish
-eval:(auto-fill-mode 1)
-eval:(set-register ?m "1991-03---	user@Lysator.LiU.Se				0000--
-----------------------------------------------------------------------
-]tg{rdas av:	
-Program:	
-Till version:	
-Orsak:		
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-")
-End:
diff --git a/doc/Distfile b/doc/Distfile
deleted file mode 100644
index a82a44195..000000000
--- a/doc/Distfile
+++ /dev/null
@@ -1 +0,0 @@
-(/usr/local/src/2kom/doc) -> (nanny.lysator.liu.se) install;
diff --git a/doc/LOGG b/doc/LOGG
deleted file mode 100644
index 7f181f3f4..000000000
--- a/doc/LOGG
+++ /dev/null
@@ -1,77 +0,0 @@
-Det SIST SKRIVNA hamnar F\RST I FILEN /Aronsson.
-
-Loggfil d{r man skriver vad man g|r. Det {r b{ttre att du skriver lite
-{n inte alls (mest riktat till mig sj{lv...). /lw 900402
-----------------------------------------------------------------------
-
-3 juni 1991		Aronsson
-
-Uppdaterat prot-A.txt och i denna inkluderat prot-A.bnf. Satt
-prot-A.bnf till att vara en symbolisk l{nk till txt-filen.
-
-
-14 oktober 1990		Aronsson was here
-
-Lagt hit nedanst}ende filer. Originalen beh}ller jag hemma hos mig.
-	prot-A.txt	Spec protokoll A. Textdelen. Svensk font.
-	prot-A.bnf	Spec protokoll A. Koddelen. Engelsk font.
-	version		Hantering av {ndringsf|rslag och versioner.
-
-1990-04-17 /ceder
-
-Tog bort den felaktiga definitionen av typen Connection ur kom-types.h. Den
-riktiga finns i server/server.h.
-
-Flyttade definitioner av Persons, Marks, String och Map till kom-types.h.
-
-B|rjade anv{nda M-X Add-change-log-entry i st{llet.
-
-900407 /lw
-
-Det h{r {r c. Allts} b|r active_connection vara en pekare! (har {ndrat)
-
-Flyttade smalloc ("s{ker" malloc) till cache.c.
-
-Nu sparar ldb.c {ven texts-f{ltet i person-structen...
-
-
-1990-04-04 /ceder
-
-[ndrade i Person-structen: Tog bort created_texts. La till
-first_text, last_text och texts (en lista med globala textnummer de globala
-textnummer som personen har skapat.)
-
-active_connection (server.h) {r index i arrayen connections (connections.c).
-
-Skapade filen doc/security-levels.txt d{r det anges vad de olika priv-bitarna 
-inneb{r.
-
-900404 /lw
-
-[ndrade ldb:s felhantering. Nu finns den! Fortfarande inte speciellt
-snygg, men n}got b{ttre {n tidigare. Returnerar intern felkod i
-ldb_errno och filhandtag till felande filen i ldb_errfileno.
-
-
-
-1990-04-02 /ceder
-
-Fr}n och med nu anv{nder vi ISO-standard f|r datum. (:-)
-
-kom-types.h: Tog bort flags och lade till user_area i Person-structen.
-
-900402 /lw
-Vi flyttade om filerna. Under ldb ligger nu i princip endast ldb.c och
-ldb.h. Under client ligger de filer som {r specifika f|r klienten och
-under server ligger de server-specifika filerna. doc-directoryt
-inneh}ller dokumentationen f|r det vi h}ller p} med.
-
-Direkt under 2kom ligger f|r n{rvarande allt som {r gemensamt f|r
-s}v{l klient som server. Det {r types.h och kom-types.h (varf|r {r det
-uppdelat i tv} filer?) samt services.h som tidigare hette atomic.h.
-
-Jag har f|rresten tagit bort parametern connection som alla funktioner
-i atomic.h hade. Fr}n klientens synvinkel finns inte den parametern
-och det verkar f}nigt att ha den i servern. Om man har samma parameter
-till samtliga funktioner tycker jag det {r ganska vettigt att i
-st{llet anv{nda en global variabel.
diff --git a/doc/Mailinglist b/doc/Mailinglist
deleted file mode 100644
index b23018269..000000000
--- a/doc/Mailinglist
+++ /dev/null
@@ -1,13 +0,0 @@
-uda@ida.liu.se
-anders@lage.lysator.liu.se
-tpe@ida.liu.se
-kjell@saturn.ucsc.edu
-jsk@lysator.liu.se
-pell@lysator.liu.se
-rolff@komunity.se
-nixon@lysator.liu.se
-riw@lysator.liu.se
-magnus_k@lysator.liu.se
-SLARTIBARTFAST@eLinor.lysator.liu.se
-ingwa@isy.liu.se
-Per_Cederqvist@f114.n204.z2.pclink.se
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644
index 78a834ae4..000000000
--- a/doc/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-TOPDIR = /usr/lyskom
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-SUBDIRS = man
-
-all:;
-depend:;
-includes:;
-libraries:;
-binaries:;
-
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
-
-install:
-	for i in $(SUBDIRS); \
-	do \
-	   echo installing directory in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) install) \
-	done
-
diff --git a/doc/Makefile.template b/doc/Makefile.template
deleted file mode 100644
index 66e77e197..000000000
--- a/doc/Makefile.template
+++ /dev/null
@@ -1,39 +0,0 @@
-#  Makefile for LysKOM
-#
-###############################################################################
-#
-#  SPECIAL CONSIDERATIONS:
-#
-#  -  Requires GNU make.
-#  -  CC, OPTIMIZE-FLAGS and other make variables are passed down 
-#     in the environment.
-#  -  C compiler must be ANSI conformant.
-#
-###############################################################################
-#
-#  SPECIAL TARGETS:
-###############################################################################
-
-# Directories that you might want to override via the environment.
-
-ifndef TOPDIR
-TOPDIR := /usr/lyskom/src
-endif
-
-ifndef SCRIPTDIR
-SCRIPTDIR := $(TOPDIR)/scripts
-endif
-
-include $(SCRIPTDIR)/import.make
-
-
-# All directories that make should traverse to when doing clean etc.
-
-SUBDIRS = doc include junk lib scripts src
-
-all:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making all in directory $$i; \
-		(cd $$i; $(MAKE) all)	\
-	done
diff --git a/doc/README b/doc/README
deleted file mode 100644
index f761ca78a..000000000
--- a/doc/README
+++ /dev/null
@@ -1,79 +0,0 @@
-Detta directory inneh}ller dokumentation om lyskom-projektet
-
-All utveckling av filer i detta bibliotek g|rs p} LLL. [ndra inga
-filer p} Nanny. Kopiera filerna till Nanny med hj{lp av rdist.
-
-OBS!! Om ni l{gger till en ny dokumentationsfil, tar bort n}gon eller
-      kombinerar tv} eller flera, {ndra d} {ven i den h{r filen!!
-
-
-F|ljande dokumentation finns i detta directory (30 april 1991):
-
-LOGG	En loggfil som beskriver aktiviteten under tidiga delar av
-	projektet. Mest av nostalgiskt intresse och n{r vi n}gon g}ng
-	skall dokumentera hur vi gjorde't.
-
-README	Denna fil.
-
-dbck.latexinfo
-	Beskriver dbck, programmet som kontrollerar och kompakterar en
-	lyskom-databas. 
-
-elisp-client.internals
-	Beskriver ing}ende hur elispklienten fungerar internt. L}ngt
-	ifr}n klar.
-
-elisp-client.user-manual
-	Beskriver alla aspekter av hur man anv{nder elispklienten.
-
-fileformat
-	Beskriver filformatet f|r lyskom-databasen. Inaktuell sedan
-	l{nge.  Den h{r filen beh|ver skrivas om.
-
-ideer/	Directory som inneh}ller filer med ideer om framtida finesser.
-	Endast dokumentation om saker som faktiskt {r implementerade
-	f}r placeras direkt under 2kom/doc. Ideer skall l{ggas i det
-	h{r directoryt.
-
-mall-swe.latexinfo
-	H{r {r en mall som kan anv{ndas f|r alla latexinfo-filer
-	skrivna p} svenska.
-
-mall.latexinfo
-	Samma som ovan, fast p} engelska.
-
-misc_items
-	Beskriver vad som kan ing} i en lista av misc-info
-	(i servern?).
-
-mux.proto
-	Beskriver protokollet mux <-> server.
-
-prot-A.bnf
-	Aronssons ov{rderliga dokument som inneh}ller en formell
-	beskrivning av protokoll A.
-
-prot-A.slightly-obsolete
-	Beskriver bl.a uppkopplingsf|rfarande och liknande.
-
-prot-A.txt
-	Beskriver datatyper och liknande i protokollet.
-
-Fotnot: De tre ovanst}ende filerna borde kunna kombineras till en och
-	speciellt s} borde de g|ras aktuella.
-
-security-levels.txt
-	Beskriver vad olika privilegiebitar betyder i protokoll A, dvs
-	semantiken. Ingen syntax beskrivs h{r.
-
-server-async.extend
-	Beskriver hur man l{gger till ett nytt asynkront meddelande i
-	servern. 
-
-server.extend
-	Beskriver hur man l{gger till ett nytt anrop i servern (och i
-	protokoll A).
-
-skeleton.doc
-	En mall som kan anv{ndas f|r att skriva en ny dokumentation i
-	vanligt textformat.
diff --git a/doc/coding-standards.txt b/doc/coding-standards.txt
deleted file mode 100644
index 90f0f70f1..000000000
--- a/doc/coding-standards.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-- hur man formatterar koden -
-
-- namnkonventioner -
-
-- Makefile -
-
-RCS
-
-Att skapa en ny fil:
-
-En ny fil placeras under RCS med "ci -r0.1 filnamn". I direktoryt
-m}ste det finnas ett direktory som heter RCS. (Man kan skapa checka in
-en ny fil fr}n emacs, men d} f}r den versionsnummer 1.0. Det g}r att
-{ndra i RCS/*,v-filen, men det blir jobbigare..)
-
-
-ATT TITTA P] EN FIL
-
-F|r att titta p} en fil g|r man "co filnamn". Med "make sources"
-checkas alla filer ut (om Makefilen {r r{tt skriven).
-
-
-
-ATT EDITERA EN FIL
-
-Innan man editerar filen m}ste man l}sa den. Det g|r man med "co -l
-filnamn" eller "C-x \"" om man anv{nder rcs-cks i emacs.
-
-Om man kommmer p} att man inte ville {ndra i filen kan man l}sa upp
-den med "rcs -u filnamn".
-
-F|r att l{mna in den nya versionen g|r man "ci filnamn" eller "C-x #".
-
-
-
-RCSCLEAN
-
-"make rcsclean" tar bort all k{llkod som inte {r l}st f|r editering.
-Med "make sources" kan man f} tillbaks den.
-
-
-RCS anv{nder inte ChangeLog. Med "rlog file" f}r man se alla {ndringar
-som gjorts i en fil. I filen RCS/.rcsfreeze.log kan man se de
-logmeddelande som skrivits in n{r man gjort rcsfreeze.
-
-ChangeLoggen ska anv{ndas ({ven om det inte {r gjort p} slutet p}
-servern).
-
-ATT INSTALLERA EN NY VERSION
-
-RCS:
-
-1) make
-2) rcsclean	# Se till att alla filer f|rsvinner
-3) rcsfreeze v0-30-4	# Eller liknande
-4) make sources
-5) make -t	# S} att man slipper kompilera om saker i on|dan.
-
-Bara steg 2 och 3 beh|vs. 1, 4 och 5 sparar lite tid.
-
-BIN[RER:
-
-Flytta server/diskomd till /usr/lyskom/bin/ramkomd. Se till att INNAN
-dess spara den gamla ramkomd. Skriv inte |ver en exekverande fil!
-
-COMMON
-
-"make serverinstall" och "make clientinstall" skall g|ras n{r man har
-{ndrat n}got.
-
-LIB
-
-"make install" skall g|ras n{r man har {ndrat n}got.
diff --git a/doc/dbck.latexinfo b/doc/dbck.latexinfo
deleted file mode 100644
index 79eefe6a4..000000000
--- a/doc/dbck.latexinfo
+++ /dev/null
@@ -1,97 +0,0 @@
-\documentstyle[12pt,latexinfo,lyskom]{report}		\c -*-latexinfo-*-
-\pagestyle{empty}
-
-\begin{document}
-
-\title{dbck --- Automatic LysKOM Database Integrity Check Program\\}
-\sp{5}
-\author{Per Cederqvist\\
-	Lysator\\
-	ceder@lysator.liu.se}
-\sp{1}
-\date{\today}
-
-\maketitle
-\clearpage
-\vspace{0pt plus 1filll}
-Copyright \copyright{} 1990 Lysator
-
-\sp{2}
-
-This document describes dbck, a program that automatically check for
-and repairs inconsistencies in the LysKOM data base.
-
-\sp{6}
-Permission is granted to copy and distribute this manual, provided that
-the above Copyright notice and this text remains on all copies.
-
-\clearpage
-\pagestyle{headings}
-\pagenumbering{roman}
-
-
-\tableofcontents
-
-\clearpage
-\pagenumbering{arabic}
-
-\setfilename{dbck.info}
-
-\begin{ifinfo}
-Copyright \copyright 1991 Lysator 
-\end{ifinfo}
-
-\node 	  Top,	Invoking dbck, , (top)    
-\comment  node-name,  next,  previous,  up
-
-Dbck is a data base checker that is used to assure that the
-data base of LysKOM isn't corrupted. It is also used to
-gather some statistics and to compact the database.
-
-\begin{menu}
-* Invoking dbck::   Options et c.
-* Tests::           A complete list of all tests that dbck performs.
-\end{menu}
-
-\node Invoking dbck, Tests, ,Top    
-\comment  node-name,  next,  previous,  up
-
-
-\chapter{Invoking dbck}
-
-Dbck accepts several switches. If no switches are given
-dbck will read the file and report any errors found, but it
-wont repair them. This behaviour is useful to check for
-errors without having to take down the server. You must
-take down the server to be able to repair any errors.
-\begin{description}
-
-\item[-D\var{dir}]Tell dbck to look for the data base is in
-the directory \file{\var{dir}/db} instead of the default
-\file{/usr/lyskom/db}.
-
-\item[-i]Interactive use. If an error is found, and dbck
-thinks that it can repair it, dbck will display a message
-describing what error it has found, and how it intend to
-fix it. The Operator can type \kbd{y} if he accepts the
-action, och \kbd{n} if not. Note that some errors will be
-repaired in a way that gives information loss --- but
-always as little as possible.
-
-\item[-r]Repair simple errors without confirmation.
-
-\item[-v]Verbose mode.
-Normally only errors are displayed. If you give the
-\code{-v} flag some more statistic, such as number of
-texts, average lengths of texts, and so on, will be
-printed.
-
-\item[-d]Debug mode.
-Hardly useful unless you are debugging lacgen.
-
-\item[-g]Garbage collect. Compact the file
-\samp{db/lyskom-texts} by removing all unused text.
-\end{description}
-\clearpage
-\chapter{Tests}
-\end{document}
diff --git a/doc/disc-cache.spec b/doc/disc-cache.spec
deleted file mode 100644
index 1bdd16e47..000000000
--- a/doc/disc-cache.spec
+++ /dev/null
@@ -1,174 +0,0 @@
-ramkomd {r d|d! L{nge leve LysKOM!
-
-Jag har tillsammans med Inge kommit p} ett s{tt att dels f} ner
-v{ntetiden i samband med syncningar till <1 sekund, dels f} ner
-storleken p} serverprocessen till mer rimliga niv}er. Denna l|sning
-lider dock av det stora problemet att den kr{ver dubbelt s} mycket
-diskutrymme som den egentligen beh|ver. Det g|r {ven ramkomd, s} det
-{r ingen f|rs{mring i det avseendet. Dock {r detta bara en tempor{r
-l|sning i v{ntan p} ldb.
-
-Varf|r spara allt p} en g}ng? Varf|r inte spara en liten del av filen
-i taget, och utf|ra n}gra atomiska anrop mellan varje liten
-delsynkning? Ungef{r s} t{nkte jag n{r jag kom p} f|ljande schema f|r
-hur man kan g|ra det hela b{ttre {n det {r nu.
-
-Den databas som ligger p} fil {r en |gonblickbild (snapshot) av det
-som finns i LysKOM. S} {r det i ramkomd; s} blir det i diskomd.
-(B{ttre namn, n}gon? lyskomd tycker jag {r reserverat f|r den version
-som har en riktig cache&ldb.) I ramkomd skrivs allt ut p} disk
-samtidigt. I diskomd minns man bara vad som skall sparas, och sparar
-bara en bit i taget.
-
-I ramkomd finns allt inne i ram-minnet (i teorin. I praktiken {r det
-mesta utswappat - n}got som m{rks varje g}ng det {r dags att synca!).
-I diskomd ligger det mesta p} disk. I minnet finns dels det som har
-anv{nts nyligen, dels det som {r {ndrat och {nnu ej syncat. Diskomd
-har alltid minst en, ofta tv}, databasfiler |ppna:
-
-	Fil A		Senaste kompletta fil.
-	Fil B		Fil under uppbyggnad.
-
-(Dessutom textmassefilen, precis som ramkomd nuf|rtiden.)
-
-S} till detaljerna:
-
-Det finns tre typer av objekt som ber|rs av den h{r {ndringen:
-Text_stat, Person och Conference. Jag anv{nder Person som ett exempel
-nedan.
-
-I ram-cache.c finns en array 
-
-	Person *pers_arr[ MAX_CONF ];
-
-Den byts mot
-
-	Cache_node *pers_arr[ MAX_CONF ];
-
-typedef struct cache_node {
-	Bool	exists;
-	Bool	exists_b;
-	Bool	dirty;		/* [r *ptr modifierad? */
-	void   *snap_shot;
-	void   *ptr;
-	off_t   pos;
-	off_t   pos_b;
-	struct cache_node *lru_link;
-	int	lock_cnt;
-} Cache_node;
-
-
-
-UPPSTART
-
-N{r servern startas scannar den igenom datafilen (fil A) och fyller i
-f{ltet exists till TRUE/FALSE och pos till att peka p} b|rjan av det
-st{lle i filen d{r data ligger. \vriga f{lt s{tts till FALSE/NULL/0.
-
-
-
-CACHE_GET_PERSON
-
-N{r ovanliggande rutiner vill l{sa en person h{nder f|ljande:
-
-!exists			Returnera NULL
-ptr != NULL		L{gg noden f|rst i lru_link. Returnera ptr.
-snap_shot != NULL	Kopiera snap_shot till ptr. L{gg noden f|rst i
-			lru_link. Returnera ptr.
-annars			L{s in fr}n fil A, s{tt ptr till den inl{sta
-			structen, l{gg noden f|rst i lru_link,
-			returnera ptr.
-
-
-MARK_PERSON_AS_CHANGED
-
-N{r n}got har {ndrats s{tts dirty-flaggan till TRUE.
-
-
-CREATE_PERSON
-
-S{tt exists=TRUE, dirty=TRUE, ptr och lru.
-
-
-DELETE_PERSON
-
-S{tt exists=FALSE. ptr=NULL. Troligtvis error om lock_cnt != 0.
-
-
-
-THROW-OUT
-
-F|r att inte diskomd ska bli f|r stor sl{ngs saker ut ur cachen.
-Algoritm: tag f|rsta elementet i lru_list. Om dirty==FALSE och
-ptr!=NULL och lock_cnt==0 s} frig|r ptr. Upprepa tills antalet noder
-med ptr!=NULL och dirty==FALSE {r mindre {n antalet "rena" element man
-vill ha inne i minnet. (Smutsiga element sl{ngs aldrig ut.)
-
-
-LOCK_PERSON
-
-\ka lock_cnt.
-
-
-UNLOCK_PERSON
-
-Minska lock_cnt.
-
-
-PRE-SYNC
-
-Utsparningen till fil sker i tre steg. F|rst sveper man |ver alla
-Cache_noder. F|r alla som har dirty=TRUE g|r man f|ljande:
-
-    if ( lock_cnt == 0 ) {
-	snap_shot = ptr; (Pekartilldelning, ej kopiering av inneh}llet.) 
-	ptr = NULL;
-	Ta bort ptr ur lru-kedjan.
-    } else {
-	snap_shot = copy(ptr);
-    }
-
-    dirty = FALSE;
-
-F|r _alla_ noder g|rs dessutom f|ljande:
-
-   b_exists==exists;
-
-
-SYNC
-
-Steg tv} utf|rs en liten bit i taget. Till exempel s} skulle man kunna
-spara en person efter varje atomiskt anrop, eller s}.
-
-b_exists==FALSE?	   S{tt pos_b. Skriv "@\n" till fil B.
-[r snap_shot != NULL?	   S{tt pos_b. Skriv ut inneh}llet i snap_shot 
-			   till fil B.
-dirty==FALSE && ptr!=NULL  Skriv ut inneh}llet i ptr till fil B.
-annars:			   Kopiera fr}n fil A till fil B. (Eftersom man
-			   vet b}de var blocket b|rjar och slutar kan man
-			   kopiera blocket utan att bry sig om vad som
-			   st}r i det -> v{ldigt lite CPU g}r }t).
-
-
-
-
-POST-SYNC
-
-N{r alla Person:er har hanterats som i SYNC ovan {r det dags f|r det
-tredje steget. D} g}r man igenom alla Cache_node:er och g|r f|ljande:
-
-	pos = pos_b;
-	file_b = FALSE;
-	free(snap_shot);
-	snap_shot = NULL;
-
-Fil B som man f|rut hade |ppen f|r skrivning |ppnar man i st{llet f|r
-l{sning som fil A.
-
-
-
-
-ANM[RKNINGAR
-
-Inneh}llet i snap_shot {r alltid "smutsigt" j{mf|rt med inneh}llet i
-fil A. Det som snap_shot pekar p} finns aldrig med i lru-kedjan.
diff --git a/doc/elisp-client.internals b/doc/elisp-client.internals
deleted file mode 100644
index 227dd679e..000000000
--- a/doc/elisp-client.internals
+++ /dev/null
@@ -1,455 +0,0 @@
-
-
-			   LysKOM-Projektet
-		   --------------------------------
-	    Data- och programstrukturer i elisp-klienten.
-		   --------------------------------
-			  av Inge Wallin
-	     <ingwa@isy.liu.se eller inge@lysator.liu.se>
-			   26 februari 1991
-
-		  delar h{mtade ur en dokumentation
-		      skriven av Per Cederqvist
-			<ceder@lysator.liu.se>
-
-
-Detta dokument beskriver de data- och programstrukturer som anv{nds i
-LysKOM-klienten skriven i elisp.  Anv{ndningen av klienten beskrivs i
-dokumentet 'LysKOM-projektet: En klient skriven i GNU-emacs-lisp.' av
-Per Cederqvist och Inge Wallin och ber|rs inte h{r.
-
-De som framf|r allt har anledning att l{sa det h{r dokumentet {r
-programmerare som skall ut|ka eller underh}lla elispklienten. N{r
-detta dokument skrivs {r versionsnumret 0.27 och eventuellt kan vissa
-detaljer ha {ndrats vid l{stillf{llet, men i stort borde informationen
-st{mma. 
-
-
-================================================================
-kapitelrubriker:
-
-* Kom-k|er och asynkront beteende
-* Hur man skriver ett nytt kommando
-* Cachening av olika datatyper
-* Hur prefetch g}r till och vad som prefetchas
-* Hur klienten v{ljer defaultkommando
-* Read-info, read-info-listor och hur klienten v{ljer l{sordning.
-* Asynkrona meddelanden
-* Parsning av det som kommer fr}n servern
-
-Fler?
-
-
-================================================================
-Kapitel: Kom-k|er och asynkront beteende
-================================================================
-(H{r b|rjar ceders text. Den m}ste eventuellt skrivas om lite.)
-
-KOM-QUEUE
-
-Kommunikationen med servern sker via en stream. Klienten skickar
-fr}gor, och f}r svar efter ett tag. Dessa anrop, och en hel massa
-annat, styrs via ett system av k|er.
-
-En kom-queue har ett namn. Namnet {r en elisp-lisp-atom, t ex "main"
-eller "kalle".
-
-ATT ANROPA FUNKTIONER VIA EN KOM-QUEUE
-
-Det enklaste man kan g|ra med en kom-queue {r att anropa en
-elisp-funktion. F|r att g|ra det anv{nder man funktionen lyskom-run.
-Den tar minst tv} argument.
-
-* Function: lyskom-run KOM-QUEUE FUNCTION &rest FUNCTION-ARGS
-
-Den h{r funktionen k|ar ett funktionsanrop p} k|n med namnet
-KOM-QUEUE. Ett litet exempel:
-
-    (prog1
-	(lyskom-run 'test 'message "%s %s\n" "Hej" "hopp")
-	(lyskom-run 'test 'message "Hall}!")
-	(lyskom-run 'test2 'message "Foobar"))
-
-Det h{r exemplet s{ger att man skall g|ra f|ljande tre funktionsanrop:
-
-	1) (message "%s %s\n" "Hej" "hopp")
-	2) (message "Hall}!")
-	3) (message "Foobar")
-
-Anrop 1 och 2 g|rs via kom-queue "test". Anrop 3 g|rs via "test2".
-Eftersom anrop 1 och 2 g|rs via samma kom-queue s} {r man garanterad
-att anrop 1 g|rs f|re anrop 2. Anrop 3 kan d{remot ske n{r som helst i
-f|rh}llande till anrop 1 och 2.
-
-
-
-ATT ANROPA SERVERN
-
-Om man bara kunde k|a funktionsanrop med lyskom-run s} vore hela
-konstruktionen ganska meningsl|s - man skulle lika g{rna kunna anropa
-funktionen direkt. Men man kan {ven anv{nda k|n f|r att fr}ga
-LysKOM-servern om saker och ting. Alla funktioner som anropar servern
-har ett namn som b|rjar p} "initiate-". Alla tar ett namn p} en
-kom-queue som f|rsta argument, och en funktion som andra argument. N{r
-servern svarar kommer den funktionen (kallad "handler") att anropas
-med svaret som argument.
-
-Som exempel kan vi ta "initiate-get-time" som fr}gar servern vad
-klockan {r.
-
-* Function: initiate-get-time KOM-QUEUE HANDLER &rest DATA
-
-Handlern kommer s} sm}ningom att anropas med ett
-	 (apply HANDLER result DATA)
-d{r "result" {r svaret fr}n servern, omgjort till ett internt
-dataformat. 
-
-Man kan blanda initiate-* och lyskom-run-anrop hur som helst. Om de
-g|rs via samma kom-queue s} kommer de olika handlers och funktioner
-som man anger att utf|ras i sekvens. Om de g|rs via olika kom-queues
-s} vet man inte i vilken ordning de utf|rs.
-
-Exempel: Om man k|r f|ljande i en lyskom-buffert
-
-    (prog1
-	(lyskom-run 'foo 'lyskom-insert "Hej! Klockan {r ")
-	(initiate-get-time 'foo 'lyskom-print-date-and-time)
-	(lyskom-run 'foo 'lyskom-insert "(enligt servern).\n"))
-
-s} f}r man:
-
-	Hej! Klockan {r 1990-10-31 21:04 (enligt servern).
-
-Om man d{remot skriver:
-    (prog1
-	(lyskom-run 'foo 'lyskom-insert "Hej! Klockan {r ")
-	(initiate-get-time 'foo2 'lyskom-print-date-and-time)
-	(lyskom-run 'foo3 'lyskom-insert "(enligt servern).\n"))
-
-blir svaret:
-	Hej! Klockan {r (enligt servern).
-	1990-10-31 21:06 
-
-Det kunde lika g{rna blivit
-	1990-10-31 21:07 (enligt servern).
-	Hej! Klockan {r
-
-N{r man anv{nder en initiate-*-funktion s} skickas en f|rfr}gan till
-servern. Den g}r iv{g direkt. N{r sedan svaret kommer parseas det
-direkt och mellanlagras p} en lista (lyskom-call-data - endast modiga
-torde titta p} den. Den {r h}rig... (och det finns en del buggar kvar
-i version 0.11b)). Sedan k|rs alla handlers och funktioner i den
-ordning som de ligger p} k|erna. (Man kan allts} se de olika k|erna
-som n}gon form av l{ttviktsprocesser).
-
-F|r att ytterligare kr}ngla till det hela s} finns det undantag fr}n
-regeln att alla initiate-*-funktioner alltid fr}gar servern.
-Initiate-get-text-stat {r ett av undantagen. Den har en cache s} att
-den bara h{mtar en text-status en g}ng per session. I och med att allt
-synkroniseras via kom-queues s} spelar det ingen roll om textstatusen
-fanns i cachen eller inte. Programfl|det blir det samma i alla fall.
-
-
-
-
-Att fr}ga om m}nga saker
-
-
-Ofta vill man fr}ga om flera saker p} en g}ng. D} kan man anv{nda
-lyskom-collect f|r att samla ihop flera resultat och skicka dom till
-en 'multi-handler'. 
-
-* Function: lyskom-collect KOM-QUEUE
-* Function: lyskom-use KOM-QUEUE MULTI-HANDLER &rest MULTI-HANDLER-DATA
-
-lyskom-collect talar om att svaren fr}n alla anrop som g|rs via den
-h{r k|n fram till n{sta lyskom-use ska lagras. N{r alla anrop {r klara
-kommer MULTI-HANDLERn att anropas med
-       (apply MULTI-HANDLER (nconc result-list MULTI-HANDLER-DATA))
-
-Ett exempel {r n{r man vill skriva ut en text. D} vill man veta b}de
-text-statusen och text-massan (sj{lva texten). D} kan man till exempel
-g|ra s} h{r (n}got f|renklat):
-
-    (defun print-text (text-status text-massa)
-	"Skriva en text"
-	...)
-
-    (prog1
-	(lyskom-run 'main 'lyskom-insert "B|rjar...\n")
-	(lyskom-collect 'main)
-	(initiate-get-text-stat 'main nil 18)
-	(initiate-get-text 'main nil 18)
-	(lyskom-use 'main 'print-text)
-	(lyskom-run 'main 'lyskom-insert "Klar!\n"))
-
-(Om man anger nil i st{llet f|r en handler till initiate-*-rutinerna
-inneb{r det att man inte bryr sig om svaret - i alla fall inte direkt
-n{r det kommer).
-
-
-
-En annan situation n{r man vill samla p} sig resultat {r n{r man har
-en lista med n}got, till exempel textnummer, och vill fr}ga servern
-samma fr}ga f|r allihop:
-
-* Function: lyskom-collect-ignore-err KOM-QUEUE
-* Function: lyskom-list-use KOM-QUEUE MULTI-HANDLER &rest MULTI-HANDLER-DATA
-
-lyskom-collect-ignore-err fungerar precis som lyskom-collect med det
-enda undantaget att anrop som misslyckas sl{ngs bort fr}n listan. Om
-man anv{nder lyskom-collect kommer det att finnas ett element p}
-listan som indikerar ett fel. Ofta {r det inget fel om ett anrop
-misslyckas. D} ska man anv{nda lyskom-collect-ignore-err s} slipper
-man ignorera felen sj{lv.
-
-lyskom-list-use {r som lyskom-use med den enda skillnaden att
-MULTI-HANDLERn kommer att anropas med
-       (apply MULTI-HANDLER result-list MULTI-HANDLER-DATA)
-
-Man f}r allts} resultaten som en lista, och inte som ett antal
-argument.
-
-H{r {r ett exempel som r{knar ut hur m}nga rader det finns totalt i
-inl{ggen 1, 2, 3 och 4. Om man inte f}r l{sa ett av inl{ggen kommer
-sum-lines att f} en lista som bara inneh}ller tre textstatusar.
-
-    (defun sum-lines (text-stat-list)
-	(let ((sum 0))
-	   (while text-stat-list
-	      (setq sum (+ sum (text-stat->no-of-lines 
-				 (car text-stat-list))))
-	      (setq text-stat-list (cdr text-stat-list)))
-	   (lyskom-insert (format "Totalt antal rader: %d\n" sum))))
-
-    (prog1
-	(lyskom-collect-ignore-err 'foo)
-	(mapcar '(lambda (nr)  (initiate-get-text-stat 'foo nil nr))
-		'(1 2 3 4))
-	(lyskom-list-use 'foo 'sum-lines))
-
-
-
-ATT STANNA EN K\
-
-* Function: lyskom-halt KOM-QUEUE
-* Function: lyskom-resume KOM-QUEUE
-
-Med hj{lp av dessa funktioner kan man stoppa och }terstarta en k|. Det
-kan vara bra att kunna g|ra ibland. F|r exempel, se k{llkoden till
-elisp-klienten.
-
-
-FELHANTERING
-
-Om man f}r ett felmeddelande fr}n servern s} m{rker handler eller
-multi-handlern det genom att v{rdet {r nil i st{llet f|r den
-<conf-stat eller vad man nu v{ntar sig> som man borde f}tt. S} {r det
-i alla fall till och med version 0.12. N}gon g}ng i framtiden kommer
-det att {ndras s} att man f}r en lista typ
-    (ERROR kom-errno kom-info)
-d{r kom-errno och kom-info {r tal som tillsammans ber{ttar vad som
-gick snett. Fr}n och med version 0.13 finns en
-
-* Function: lyskom-err-info-p OBJECT
-
-som returnerar t om OBJECT {r resultatet av ett anrop som
-misslyckades, nil om anropet lyckades.
-
-HUR MAN SKRIVER ETT KOMMANDO
-
-F|ljande {r en mall:
-
-    (defun kom-foo ()
-      "Do be doo dum. No arguments."
-      (interactive)
-      (lyskom-start-of-command nil 'kom-foo)
-      ...
-      (lyskom-end-of-command))
-
-Kommandon skall b|rja p} "kom-". lyskom-start-of-command g|r s} att
-anv{ndaren inte kan starta ett nytt kommando samtidigt.
-lyskom-end-of-command skriver ut en prompt.
-
-Om man vill skriva ut n}got i bufferten _skall_ man anv{nda
-lyskom-insert i st{llet f|r insert. Den tar ett enda argument, en
-str{ng.
-
-Om man skriver ut n}got, och vet att det kan ta l}ng tid innan man
-skriver ut resten, s} b|r man anropa lyskom-scroll. Den scrollar
-sk{rmen s} att allt utskrivet syns, fast den scrollar aldrig s} mycket
-att det man inte hunnit se f|rsvinner.
-
-
-(Slut p} ceders text.)
-================================================================
-
-================================================================
-Kapitel: Hur man skriver ett nytt kommando
-================================================================
-Kapitlets text h{r...
-================================================================
-
-
-================================================================
-Kapitel: Cachening av olika datatyper
-================================================================
-Kapitlets text h{r...
-================================================================
-
-
-================================================================
-Kapitel: Hur prefetch g}r till och vad som prefetchas
-================================================================
-Kapitlets text h{r...
-================================================================
-
-
-================================================================
-Kapitel: Hur klienten v{ljer defaultkommando
-================================================================
-Kapitlets text h{r...
-================================================================
-
-
-================================================================
-Kapitel: Read-info, read-info-listor och hur klienten v{ljer l{sordning.
-================================================================
-(Ursprungligen skriven av Linus. Kanske m}ste {ndras lite.)
-
-
-F|r att man skall kunna ha full f|rdel av det system som jag skissar
-p} och som fungerar just nu s} m}ste man t{nka sig ordningen som man
-l{ser i som en slags stack. Allting staplas ovanp}.
-
-Antag att du l{ser i ett m|te. D} har du i botten p} stacken en lista
-som talar om vilka ol{sta du har. Ovanp} denna ligger kanske en lista
-med inl{gg som du h}ller p} att l{sa i kommentarordning.
-
-typ	    textnummer	betydelse
-----------------------------------------------------------------
-COMM-TO	    <5 6>	Kommentarer till inl{gg 4 som du l{ste nyss
-CONF	    <5 6 7 8>	Kvar att l{sa
-
-Nu har du prompten "l{sa n{sta kommentar".
-
-COMM-TO	    <7>		Kommentar till inl{gg 5 som du l{ste nyss.
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 7 8>	Kvar att l{sa
-
-Om du nu f}r f|r dig att g|ra ]terse alla av Linus Tolke Y till Fritt
-Forum s} staplas denna lista ovanp}.
-
-REVIEW	    <12 13 16 23> Inl{gg av Linus Tolke Y i Fritt Forum.
-COMM-TO	    <7>		Kommentar till inl{gg 5 som du l{ste nyss.
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 7 8>	Kvar att l{sa
-
-Du l{ser ett.
-
-REVIEW	    <13 16 23>  Inl{gg av Linus Tolke Y i Fritt Forum som
-		        v{ntar p} att du skall l{sa dem
-COMM-TO	    <7>		Kommentar till inl{gg 5 som ligger och v{ntar.
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 7 8>	Kvar att l{sa
-
-Nu vill du forts{tta l{sa i m|tet: n i (n{sta inl{gg).
-Du f}r prompten L{sa n{sta kommentar -
-
-COMM-TO	    <7>		Kommentar till inl{gg 5 som du strax l{ser
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 7 8>	Kvar att l{sa
-REVIEW	    <13 16 23>  Inl{gg av Linus Tolke Y i Fritt Forum som
-			v{ntar p} att bli l{sta
-
-Du l{ser. Du f}r se inl{gg 7.
-
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 8>	Kvar att l{sa
-REVIEW	    <13 16 23>	
-
-Nu vill du forts{tta att {terse: } n  ]terse n{sta.
-Du f}r en ny prompt:
-]terse n}sta text -
-
-REVIEW	    <13 16 23>	Du kommer att forts{tta l{sa dessa.
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 8>	Kvar att l{sa
-
-Du l{ser: F}r se inl{gg 13.
-
-REVIEW	    <16 23>	
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 8>	Kvar att l{sa
-
-Nu vill du }terse tr{det som inl}gg 13 fanns i.
-Tryck } t ]terse tr{d.
-Du f}r se inl{gg 2.
-
-REVIEW-TREE <3 10 11>(2)Kommentarer till inl{gg 2.
-REVIEW	    <16 23>	V{ntar.
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 8>	Kvar att l{sa
-
-REVIEW-TREE {r en speciell typ som g|r att det byggs ett nytt tr{d av
-alla kommentarer varje g}ng man l{ser ett inl{gg.
-Du har nu prompten:
-]terse n{sta kommentar -
-Du l{ser (inl{gg 3)
-
-REVIEW-TREE <13>   (3)	Kommentar till inl{gg 3 som v{ntar.
-REVIEW-TREE <10 11>(2)  Kommentarer till inl{gg 2 som v{ntar
-REVIEW	    <16 23>	V{ntar.
-COMM-TO	    <6>		Kommentar till inl{gg 4 som ligger och v{ntar.
-CONF	    <6 8>	Kvar att l{sa
-
-Om du nu har villat bort dig och vill ha ett tips p} var du {r s}
-finns funktionen: (]terse) Lista stack  } l
-Den ger utskriften:
-
-]terse 1 kommentarer till inl{gg 3.
-]terse 2 kommentarer till inl{gg 2.
-]terse 2 inl{gg.
-]terse n{sta kommentar - 
-
-Du har prompten: ]terse n{sta kommentar -
-Om du ni vill komma tillbaka till att l{sa d{r du var i m|tet trycker du 
-]terse hoppa.
-Du f}r d} prompten: L{sa n{sta kommentar -
-
-Om man g|r n{sta m|te s} gl|ms bara alla andra typer {n CONF och n{sta
-m|te plockas in.
-
-
-(Denna text finns {ven i filen:
- lll:/usr/local/src/2kom/doc/elisp-client-review
- Sammanfattningen fr}n f|rra inl{gget finns i filen:
- lll:/usr/local/src/2kom/doc/elisp-client-review-short)
-
-
-(Slut p} linus text.)
-================================================================
-
-
-================================================================
-Kapitel: Asynkrona meddelanden
-================================================================
-Kapitlets text h{r...
-================================================================
-
-
-================================================================
-Kapitel: Parsning av det som kommer fr}n servern
-================================================================
-Kapitlets text h{r...
-================================================================
-
-
-
-Resten av denna fil inneh}ller lite saker }t emacs.
-
-Local Variables:
-mode:indented-swedish
-eval:(auto-fill-mode 1)
-End:
-
diff --git a/doc/elisp-client.user-manual b/doc/elisp-client.user-manual
deleted file mode 100644
index e4fa5f9c9..000000000
--- a/doc/elisp-client.user-manual
+++ /dev/null
@@ -1,802 +0,0 @@
-
-
-			   LysKOM-Projektet
-		   --------------------------------
-		  En klient skriven i GNU-emacs-lisp.
-		   --------------------------------
-			  av Per Cederqvist
-		       <ceder@lysator.liu.se>
-		    (f|r en mycket gammal version)
-
-		      uppdaterad av Inge Wallin
-	     <ingwa@isy.liu.se eller inge@lysator.liu.se>
-			  f|r version 0.28
-
-
-
-F\RORD
-
-Meningen med detta dokument {r att den ska beskriva allt man beh|ver
-veta om elisp-klienten (se nedan) f|r att kunna anv{nda den.  Det
-f|ruts{tts att l{saren k{nner till GNU-emacs. Om anv{ndaren har anv{nt
-QZ-KOM {r detta en f|rdel, men det {r p} inget vis n|dv{ndigt f|r
-f|rst}elsen av LysKOM.
-
-
-
-BAKGRUND
-
-LysKOM {r ett konferenssystem som {r inspirerat av KOM, det
-konferenssystem som skapades av QZ i Stockholm. Orsaken till att
-LysKOM skrevs var att det KOMsystem Lysators medlemmar hade tillg}ng
-till lades ner. QZ-KOM gick endast att k|ra p} DEC-20-maskiner och den
-sista DEC-20-maskinen p} LiTH som studenterna hade tillg}ng till
-s}ldes och f|rsvann. KOM hade blivit vanebildande f|r en del och det
-bed|mdes att en ers{ttning var n|dv{ndig.
-
-En tidig tanke n{r vi b|rjade jobba med LysKOM var att det skulle g}
-att ha flera olika anv{ndarinterface samtidigt. N}gon vill se en
-grafisk struktur p} hur inl{ggen h{nger ihop p} sin grafiska sk{rm,
-n}gon annan vill kunna forts{tta att anv{nda sin gamla vt100. Det var
-ocks} klart att systemet skulle k|ra under UNIX eftersom detta
-operativsystem bed|mdes som vanligt i framtiden. Lysators medlemmar
-hade dessutom stor erfarenhet av UNIX och Lysator {ger ett antal UNIX-
-maskiner.
-
-Bland annat av dessa orsaker valde vi att anv{nda en server-klient-
-modell. En central server tar hand om alla inl{gg och LysKOM:s hela
-databas. Mot denna server kan flera stycken klienter koppla upp sig
-via TCP/IP.
-
-Vi b|rjade tidigt skriva p} en klient i C som skulle bli en ganska
-trogen kopia av QZ-kom. Det har dock visat sig att det finns m}nga
-problem, som kanske var st|rre {n vi trodde fr}n b|rjan. Den h{r
-klienten {r inte klar {n p} ett tag. Det {r Thomas Bellman som jobbar
-med C-klienten ({ven kallad tty-klienten eftersom den g}r att k|ra p}
-vilken tty som helst).
-
-Jag, Per Cederqvist, har i st{llet skrivit en klient i elisp, det
-programspr}k som finns inbyggt i GNU-Emacs. Denna klient har d{refter
-byggts ut till en ganska omfattande klient av ett antal
-Lysatormedlemmar och har visat sig vara enkel att modifiera med nya
-funktioner och att hitta fel i. Detta dokument {r en enkel
-anv{ndarhandledning och beskriver hur man anv{nder elispklienten.
-
-
-SERVERN
-
-Servern, databashanteraren, {r skriven i C och k|rs p}
-nanny.lysator.liu.se (IP-nummer 130.236.254.13). Databasfilen {r
-l{sbar av alla som kan logga in p} nanny, vilket kan tyckas vara en
-bugg, men den {r medveten. Vi vill inte ge n}gon en falsk k{nsla av
-s{kerhet och p} ett system s}dant som Lysators {r det alltf|r m}nga
-som har privilegier f|r att man skall kunna garantera n}gon hemlighet.
-P} andra serverinstallationer i framtiden blir naturligtvis
-situationen en annan.
-
-
-
-UPPSTART
-
-Fr}n Lysators maskiner
-
-Enklast {r att k|ra LysKOM fr}n n}gon av Lysators UNIX-maskiner (lage,
-lave, laila eller nanny). N{r man har startat emacs r{cker det med att
-skriva
-
-	M-x lyskom
-
-f|r att s{tta ig}ng. Svara p} fr}gan om server med att trycka RETURN.
-
-
-Fr}n elev-sparcarna p} IDA (Inst. f|r Datavetenskap p} LiTH):
-
-L{gg in
-
-	(autoload 'lyskom "~d88perce/lyskom" "K|ra LysKOM" t)
-
-i din .emacs. Starta om emacs eller l{s in .emacs i din emacs igen.
-Skriv M-x lyskom. N{r du f}r fr}gan om server svarar du "inga15" och
-hoppas att allt fungerar. K|r inte fr}n IDA:s maskiner om de {r
-nerlastade - vi vill inte att n}gon ska f} f|r sig att det h{r
-"kryph}let" m}ste t{tas! P} inga15.ida.liu.se ligger ett litet
-program som rel{ar anropen vidare till nanny.lysator.liu.se d{r
-databasen f|r n{rvarande ligger.
-
-
-
-Fr}n andra maskiner
-
-H{mta filen lyskom.el eller lyskom.elc. Senaste versionen finns alltid
-p} lage.lysator.liu.se i directoryt /usr/local/lib/elisp/. K|r, och
-hoppas att du kommer }t Nanny eller inga15.ida.liu.se. Om det blir
-problem, s} l|s dom och tala om f|r mig hur du l|ste dom, s} kan jag
-l{gga in din l|sning h{r. 
-
-Om du vill h{mta LysKOMklienten fr}n n}gonstans utanf|r LiTH kan du
-h{mta den senaste versionen via anonym ftp fr}n nanny.lysator.liu.se
-(130.236.254.13). Skriv 'ftp nanny.lysator.liu.se' och ge 'ftp' som
-anv{ndarnamn. N{r nanny fr}gar efter l|senord, ange din emailadress
-och tryck return. L|senordet ekas inte. G} ner i directoryt pub/lyskom
-och skriv 'bin'. Detta s{tter om ftp till BINARY MODE vilket {r
-n|dv{ndigt f|r att f} |ver elispklienten korrekt. Skriv sedan 'get
-lyskom-X.elc.Z' d{r X {r det h|gsta nummer du kan hitta i det
-directoryt. Filen med det h|gsta numret {r alltid den senaste
-versionen. N{r |verf|ringen {r klar, bryt f|rbindelsen genom att
-skriva 'quit'.
-
-
-
-F\RSTA G]NGEN DU K\R LYSKOM
-
-N{r du har svarat p} fr}gan om server och uppkopplingen mellan klient
-och server {r klar s} f}r du en ny fr}ga; ditt namn. Det {r sed att
-ange b}de f|r och efternamn samt den organisation du arbetar f|r, t ex
-
-	Inge Wallin, ISY
-
-Om det inte fanns n}gon med det namn du angav s} f}r du bekr{fta att
-du {r en ny anv{ndare. Sen f}r du uppge ett personligt l|senord. Kom
-ih}g att vem som helst kan l{sa databasfilen, s} anv{nd inte ett l|sen
-som du anv{nder n}gon annanstans!
-
-Efter en liten stund dyker det upp ett f|nster d{r det st}r
-
-	Mottagare: <1> Presentation (av nya) m|ten
-	[rende: Inge Wallin, ISY
-	--- Skriv texten nedanf|r denna rad ---
-
-Skriv en kort presentation av dig sj{lv. Du b|r }tminstone ha med ditt
-riktiga namn, din adress och telefonnummer, och email-adress. Det {r
-inget krav som vi st{ller f|r att du ska f} k|ra LysKOM, men det
-underl{ttar f|r alla som vill komma i kontakt med dig.
-
-N{r du {r klar trycker du C-c C-c f|r att skicka in texten.
-
-
-
-PROMPTEN
-
-N{r LysKOM {r klart att ta emot ett kommando skrivs en prompt ut. Den
-kan se ut p} t.ex f|ljande s{tt:
-
-G} till n{sta m|te -
-L{sa n{sta text -
-Se tiden - 
-
-N{r du ser prompten kan du ge ett kommando. Var sn{ll mot klienten!
-Tryck inte p} en massa knappar innan du ser prompten! Det blir bara
-problem om du g|r det! Speciellt k{nslig {r den i inloggningsfasen.
-Kom ih}g att elispklienten fr}n b|rjan var avsedd bara som ett
-surrogat f|r den egentliga klienten och att det som du nu k|r {r en
-pre-alfarelease.
-
-
-
-SCROLLNING
-
-Om inte allt ryms p} sk{rmsidan s} syns en procentsats i mode-raden.
-Tryck p} mellanslag n{r du l{st klart s} scrollas n{sta sida fram.
-
-
-KOMMANDON
-
-Det finns tv} slags kommandon, dels de som {r bundna till enskilda
-tangenter, dels de som du m}ste ange i klartext. M}nga kommandon kan
-anges p} b}da s{tten. F|r att ange ett kommando med dess fulla namn
-trycker du tangenten 'a', vilket skall uttydas "(N}got) Annat", ett
-kommando som fanns gamla QZ-KOM. Detta ger dig en fr}ga p} emacs
-meddelanderad och du kan nu trycka '?' och f} en lista p} vilka
-kommandon som finns.
-
-Antalet kommandon |kar hela tiden med |kande versionsnummer. F|ljande
-kommandon finns i elispklienten i den version som anges i titeln p}
-detta dokument. F|rst visas vilken tangent som funktionen ligger p}
-och d{refter vad man anger under 'a'.  I m|tet "LysKOM Elisp-klient;
-buggar, nyheter och annat" diskuteras nyheter om klienten. N{r en ny
-version sl{pps annonseras det ocks} i det m|tet, f|r det mesta
-tillsammans med en lista p} de {ndringar som {r gjorda sen f|rra
-versionen.
-
-
-v	    Vilka {r inloggade
-
-    Visa en lista |ver de personer som {r inloggade i LysKOM f|r
-    |gonblicket. Man f}r dessutom reda p} vilken maskin de k|r ifr}n
-    samt vad de sysslar med just nu. Inloggningarna visas i sessions-
-    nummerordning och den egna inloggningen markeras med en asterisk
-    precis efter sessionsnumret.
-
-
-e	     Endast l{sa senaste
-
-    Man f}r ange ett antal inl{gg som man vill l{sa i det nuvarande
-    m|tet. Alla andra inl{gg i m|tet markeras s}som l{sta. 
-
-
-" " (mellanslag) eller <RETURN>
-
-    Utf|r defaulthandlingen, dvs det som st}r i prompten.
-
-
-<LINEFEED> (eller <NEWLINE>)
-
-    Samma som mellanslag eller <RETURN>, men placera f|rst mark|ren
-    |verst p} sk{rmen.
-
-
-?          Hj{lp
-
-    Beskriv LysKOM-moden och alla dess tangentbordsbindningar.
-
-
-b	   Skicka brev
-
-    Skicka ett brev till en person eller ett m|te. Programmet fr}gar
-    efter vilket m|te/person som man vill skicka brevet till. Man kan
-    skicka brev {ven till slutna m|ten. (Att skicka brev till m|ten
-    fungerar bara i version 0.18.5 och h|gre). Om personen eller m|tet
-    har en lapp p} d|rren (se kommandot "S{tt lapp p} d|rren") s}
-    visas lappen i lyskom-bufferten.
-
-
-g	   G} till m|te
-
-    G} till ett nytt m|te f|r att b|rja l{sa inl{gg d{r. LysKOM fr}gar
-    efter vilket m|te du vill g} till. Om du inte {r medlem i m|tet s}
-    fr}gar LysKOM om du vill bli medlem i m|tet.
-
-
-i	   Skriva ett inl{gg
-
-    Skriv ett inl{gg i det m|te d{r du befinner dig f|r tillf{llet. 
-
-
-k	  Kommentera inl{gget
-
-    Kommentera det senast l{sta inl{gget.
-
-
-p	  Personligt svar
-
-    Skriv ett personligt svar till f|rfattaren av det senast l{sta
-    inl{gget. Detta {r detsamma som att skicka ett brev till honom som
-    {r en kommentar till inl{gget.
-
-
-h	  Hoppa |ver alla kommentarer
-
-    Hoppa |ver alla kommentarer till det senast l{sta inl{gget, dvs
-    markera dem som l{sta utan att visa dem. Detta sker rekursivt s}
-    att alla kommentarer till kommentarerna markeras ocks} som l{sta,
-    osv. 
-
-
-lm	  Lista m|ten
-
-    Lista alla m|ten som matchar ett givet m|nster. LysKOM fr}gar
-    efter m|nstret innan s|kningen startar. En asterisk ("*") skrivs
-    ut framf|r namnet p} alla m|ten som man inte {r medlem i.
-
-
-ln
-
-    Lista alla nyheter, dvs alla m|ten i vilka du har ol{sta inl{gg. 
-
-
-lN	  Lista nyheter
-
-    Samma som ln, men anv{nder en n}got l}ngsammare metod. Detta anrop
-    finns endast med som s{kerhet eftersom metoden som anv{nds f|r
-    "ln" visserligen {r snabbare, men ocks} mycket mer komplicerad.
-    Detta kommando kommer att f|rsvinna snart.
-
-
-lp	  Lista personer
-
-    Lista alla personer som matchar ett givet m|nster. LysKOM fr}gar
-    efter m|nstret innan s|kningen startar.
-
-
-ls	  Lista medlemsskap
-
-    Listar vilka m|ten du {r medlem i, vilka prioriteter som g{ller
-    f|r m|tena samt hur m}nga ol{sta du har i varje m|te.
-
-
-m	 Bli medlem i m|te
-
-    Fr}gar efter ett m|te och ser till att du blir medlem i det. I
-    samband med detta f}r du ange en prioritet f|r m|tet och var m|tet
-    skall l{sas i f|rh}llande till andra m|ten med samma prioritet.
-    Prioriteten skall vara ett tal mellan 0 och 255 med 255 som h|gst
-    prioritet. 
-
-    Om m|tet {r slutet s} kan man inte g} med i det. Detta kommando
-    kan {ven anv{ndas f|r att {ndra prioritet f|r ett m|te som du
-    redan {r medlem i.
-
-
-u	  Uttr{da ur
-
-    Fr}gar efter namnet p} ett m|te och g|r s} att du uttr{der ur
-    m|tet. Alla markeringar om eventuella l{sta texter f|rsvinner.
-
-
-ni	  L{sa n{sta inl{gg
-
-    G} till n{sta text och visa den. Om du h}ller p} att }terse sparas
-    informationen om vad du }terser undan. Med "}n" kan du sedan
-    }terse n{sta inl{gg.
-
-
-nm	  G} till n{sta m|te
-
-    G}r till n{sta m|te med ol{sta inl{gg. Alla ol{sta i det nuvarande
-    m|tet sparas och m|tet placeras sist i listan |ver m|ten med
-    ol{sta inl{gg.
-
-
-q	   Sluta
-
-    Avsluta LysKOM och ta bort bufferten. Det g}r lika bra att sluta
-    genom att g} ur Emacs.
-
-
-
-r	  ]terstarta kom
-
-    Nollst{ller diverse interna strukturer i klienten. Anv{nds d}
-    klienten har h{ngt sig eller d} klienten och servern har kommit ur
-    fas. Det kan de g|ra om man trycker C-g vid ol{mpliga tillf{llen.
-
-
-t	 Se tiden
-
-    Visar vad klockan {r.
-
-
-fu	 F} uppmuntran
-
-    Ger den dystre anv{ndaren lite ljus i m|rkret.
-
-
-fs	 F} sk{ll
-
-    Tar ner den uppbl}ste anv{ndaren p} jorden.
-
-
-{p	 [ndra presentation
-
-    [ndrar presentationen f|r ett m|te eller en person. LysKOM fr}gar
-    efter vilken person/m|te som presentationen skall {ndras f|r och
-    placerar dig i redigeringsl{ge.
-
-
-}	     ]terse text
-
-    ]terse en eventuellt tidigare l{st text. Om du anger ett nummer
-    direkt efter }:et s} visar LysKOM denna text. Om du ger ett
-    mellanslag s} fr}gar LysKOM efter textnummer.
-
-
-}k	  ]terse det kommenterade
-
-    ]terse det eller de inl{gg som det senast l{sta {r en kommentar
-    till. Om inte det senast l{sta {r en kommentar utan ett
-    originalinl{gg s} ger LysKOM ett felmeddelande.
-
-
-}ak	]terse alla kommentarer (rekursivt)
-
-    ]terse alla inl{gg som {r kommentarer till det senast l{sta
-    inl{gget. Detta sker rekursivt s} att {ven kommentarer till dessa
-    kommentarer }terses. 
-
-
-}r     ]terse urinl{gget
-
-    ]terser originalinl{gget som gav upphov till den kommentarkedja
-    som det senast l{sta inl{gget ing}r i.
-
-
-}n      ]terse n{sta
-
-    ]terser n{sta inl{gg i }tersestacken.
-
-
-}s      ]terse senaste
-
-    ]terse de senaste N inl{ggen av X i m|tet M. LysKOM fr}gar efter
-    personen X och m|tet M. N {r prefixargument. 
-
-    Om man inte ger n}got prefixargument s{tts N=1. Om man anger N=0
-    f}r man se alla inl{gg av X till M. Om N {r negativt s} f}r du se
-    de abs(N) f|rsta inl{ggen av X i m|tet M.
-
-    Om man inte anger X f}r man se de senaste N inl{ggen i m|tet M.
-    Default f|r m|tet {r det m|te du {r i. Om man inte anger M f}r man
-    se de senaste N inl{ggen av X. 
-
-    M kan vara din egen brevl}da, men du kan inte }terse texter till
-    n}gon annans brevl}da. Det beror p} en bug i server som kommer att
-    r{ttas, f|rhoppningsvis f|re sommaren 1991.
-
-
-}h      ]terse hoppa
-
-    Avslutar alla }tersekommandon.
-
-
-}l      ]terse lista
-
-    Visar vilka inl{gg som kommer att }terses, dvs resulatet av alla
-    fortfarande aktiva }tersekommandon. 
-
-
-}p      ]terse presentation
-
-    Fr}gar efter namnet p} en person eller ett m|te och visar
-    presentationen f|r denna person/m|te.
-
-
-}t        ]terse tr{d
-
-    Samma som ]terse urinl{gget + ]terse alla kommentarer f|r det
-    senast l{sta inl{gget.
-
-
-B     (]terse) Bakl{nges
-
-    V{nder p} ordningen som de inl{gg man g|r }terse p} presenteras.
-    Om man t ex }terser de senaste N av n}gon s} vill man kanske
-    }terse dem framifr}n i st{llet f|r bakifr}n.
-
-
-sm	   Status (f|r) m|te
-
-    Visar upp en del intressanta data f|r ett m|te.
-
-
-sp	  Status (f|r) person
-
-    Visar upp en del intressanta data om en person.
-
-
-M         Markera (inl{gg)
-
-    Fr}gar efter inl{ggsnummer och s{tter en markering p} det
-    inl{gget. Det senast l{sta inl{gget {r default. Alla markerade
-    inl{gg kan senare }terses (se nedan).
-
-
-A         Avmarkera (inl{gg)
-
-    Fr}gar efter inl{ggsnummer och tar bort den eventuella markeringen
-    fr}n det inl{gget. Det senast l{sta inl{gget {r default.
-
-
-}m        ]terse (alla) markerade
-
-    ]terser alla inl{gg som tidigare markerats med hj{lp av M eller
-    "Markera (inl{gg)".
-
-
-H{r f|ljer n}gra funktioner som inte ligger p} n}gra egna tangenter,
-men som kan hittas under "E"
-
-
-Skapa m|te
-
-    Skapa ett nytt m|te.
-
-
-Utpl}na
-
-    Utpl}na en person eller ett m|te. Om man inte {r organisat|r f|r
-    m|tet/personen s} misslyckas kommandot.
-
-
-Radera (text)
-
-    Fr}gar efter inl{ggsnummer och raderar inl{gget. Man kan {ven ange
-    inl{ggsnumret som prefixargument.
-
-
-Addera mottagare
-
-    Fr}gar efter textnummer och namnet p} ett m|te eller en person.
-    Inl{gget f}r d} angivet m|te eller person som mottagare.
-
-
-Subtrahera mottagare
-
-    Fr}gar efter textnummer och namnet p} ett m|te eller en person.
-    Inl{gget har d} inte l{ngre angivet m|te eller person som
-    mottagare. Du f}r bara ta bort en mottagare om du {r organisat|r
-    f|r mottagaren eller f|rfattare till inl}gget.
-
-
-Addera medlem
-
-    Fr}gar efter person som skall adderas samt till vilket m|te.
-    Detta kommando m}ste anv{ndas f|r att addera medlemmar till ett
-    slutet m|te och det {r bara organisat|ren f|r det m|tet som kan
-    anv{nda det. Det kan ocks} anv{ndas f|r att addera medlemmar till
-    en brevl}da, dvs en person, om man vill att n}gon annan skall
-    kunna l{sa dennes post. Ett exempel {r om man vill skapa en
-    brevgrupp d{r flera personer kan l{sa posten som kommer till
-    gruppen. 
-
-
-Subtrahera medlem
-
-    Fr}gar efter person som skall subtraheras samt vilket m|te som
-    personen skall subtraheras ifr}n. Detta kommando kan t ex anv{ndas
-    av organisat|ren f|r ett m|te n{r han vill utesluta n}gon fr}n
-    m|tet.
-
-
-B|rja med nytt namn
-
-    Logga ut den nuvarande personen ur LysKOM och b|rja med en ny
-    person utan att starta en ny session.
-
-
-[ndra namn
-
-    Fr}gar efter vilket m|te eller vilken person som skall {ndra namn
-    samt det nya namnet. Om du inte {r organisat|r f|r m|tet/personen
-    s} misslyckas kommandot.
-
-
-[ndra l|senord
-
-    Fr}gar efter det gamla l|senordet samt det nya du vill ha. Det nya
-    l|senordet m}ste matas in tv} g}nger f|r att det inte skall stavas
-    fel av misstag.
-
-
-S{tt lapp p} d|rren
-
-    Fr}gar efter m|te eller person som du vill s{tta en lapp p} f|r.
-    Lapp p} d|rren betyder att en person som f|rs|ker skicka brev till
-    personen/m|tet f}r ett meddelande n{r brevet s{nds iv{g.
-
-
-Ta bort lapp p} d|rren
-
-    Fr}gar efter m|te eller person och tar bort lappen p} d|rren f|r
-    personen/m|tet i fr}ga.
-
-
-
-NAMN
-
-N{r du skall ange ett m|tes- eller person-namn s} r{cker det att
-skriva en entydig bit av namnet. Till exempel s} r{cker det (f|r
-tillf{llet) att skriva "ce" f|r att logga in som "ceder". Saker inom
-parentes r{knas inte, s} "Anders Andersson" och "(Hej p} dig) Anders
-(och) Andersson (!)" {r precis samma sak. Ofta kan man skriva "m 10"
-eller "p 10" i st{llet f|r ett m|te/en person om man vet att m|tet har
-nummer 10.
-
-
-
-ATT SKRIVA INL[GG
-
-F|r varje inl{gg/kommentar man skriver f}r man upp en ny buffert. Man
-kan skriva p} flera inl{gg samtidigt, och det spelar ingen roll i
-vilken ordning man avslutar dem. S} l{nge som man har f|rbindelsen
-till servern ig}ng s} kan man skicka in texterna.
-
-\verst i bufferten finns ett antal rader som talar om vem, vad eller
-vilka som blir mottagare, och om det h{r {r en kommentar till en
-(eller flera) texter. Man kan {ndra i det h{r f{ltet, men man ska vara
-f|rsiktig.  Det finns ingen felkontroll... Det finns fyra olika saker
-som kan st} h{r:
-
-	Mottagare: <nr> Namn
-	Extra kopia: <nr> Namn
-	Kommentar till text nr.
-	Fotnot till text nr.
-
-'nr' {r ett decimalt tal. 'Namn' {r ett m|tesnamn. N{r man {ndrar i de
-h{r f{lten beh|ver man inte skriva s} mycket. Det r{cker med den
-f|rsta bokstaven i varje rad och nummret. I de tv} f|rsta fallen skall
-numret st} inom klamrar. Ett exempel p} hur man kan skriva {r:
-
-	M<6>
-	E<80>
-	K118
-	K 148
-	Fotnot 12.
-
-Den h{r texten kommer att ha m|te 6 som mottagare. M|te 80 f}r en
-extra kopia. (Den enda skillnaden mellan "Mottagare" och "Extra kopia"
-{r att n{r n}gon kommenterar inl{gget kommer kommentarerna bara att g}
-till de m|ten som st}r som mottagare). Texten {r en kommentar till
-text 118 och 148 och dessutom en fotnot till text 12. (En fotnot och
-en kommentar {r i stort sett samma sak, men det {r bara f|rfattaren
-till en viss text som kan skriva en fotnot till den, och fotn|tter
-till en text skrivs ut f|re alla kommentarer (i en framtida version)).
-
-Klienten litar blint p} det nummer man anger. Ingen kontroll g|rs att
-det st{mmer med det som st}r efter klamrarna.
-
-Man kan blanda rader av typ M, E, K och F i vilken ordning som helst,
-men det f}r inte finnas n}gra andra rader f|re {renderaden. (Inte ens
-en blankrad).
-
-Om man vill skicka texten till ett annat m|te {n dem som st}r s} m}ste
-man allts} veta numret p} m|tet. Det kan man ta reda p} genom att byta
-buffert till LysKOM-bufferten (som normalt heter *nanny* eller
-*inga15*) och d{r skriva "lm" eller "lp" (lista m|ten resp. lista
-personer). De nummer som skrivs ut {r de m|tesnummer som skall
-anv{ndas.
-
-Efter alla M, E, K och F-rader skall det komma en {renderad. Den skall
-se ut s} h{r:
-
-	[rende: <H{r ska du skriva en rubrik>
-
-N{r du kommenterar ett inl{gg f}r du dess {rende-rad som default. Du
-kan d} trycka C-c }k och f} upp den text som man h}ller p} att
-kommentera i ett f|nster. F|r att spara plats s} visas endast texten
-och inte texthuvudet.
-
-Sen kommer en rad som bara har till uppgift att skilja texten fr}n
-rubriken. Efter den raden skriver du ditt inl{gg. Du har tillg}ng till
-alla vanliga emacs-kommandon. Det enda som {r annorlunda {r att n{r du
-trycker C-c C-c s} skickas texten iv{g till servern. Om allt gick bra
-s} tas edit-bufferten bort och du f}r tillbaks LysKOM-bufferten.
-Textnummret f|r den skapade texten skrivs ut.
-
-Om man }ngrar sig och vill sl{nga texten man h}ller p} att skriva
-trycker man C-c k. D} tas bufferten bort, och man kommer tillbaks till
-LysKOM-bufferten.
-
-Skulle du vilja ha med delar av den text du kommenterar i ditt eget
-inl{gg kan du trycka C-c i k och d} kommer hela den kommenterade
-texten att l{ggas in d{r du var. Vill du i st{llet plocka in n}gon
-annan text s} skall du ist{llet trycka C-c i f|ljt av textnumret p}
-den text du vill ha med.
-
-Om du bara vill titta p} den text du kommenterar (t ex om du inte har
-satt flaggan kom-write-text-in-other-window, se nedan), men inte ha in
-den i inl{ggsbufferten s} kan du trycka C-c } k s} delas sk{rmen i tv}
-f|nster och den kommenterade texten visas i det andra f|nstret.
-
-
-FLAGGOR
-
-Elispklienten har ett antal flaggor f|r att anv{ndaren skall kunna
-anpassa uppf|randet till sin egen smak. H{r f|ljer en lista |ver dessa
-flaggor samt vilka v{rden de kan anta och deras betydelse i
-programmet.
-
-Flaggorna dokumenteras genom att deras namn skrivs ut f|ljt av deras
-defaultv{rde. I texten som f|rklarar flaggan listas m|jliga v{rden. Om
-ett annat v{rde {n defaultv{rdet |nskas s} kan man antingen anv{nda
-emacsfunktionen M-X set-variable eller skriva in rader liknande
-(setq flaggnamn 'v{rde) i sin .emacs-fil.
-
-
-kom-write-texts-in-other-window		     nil
-
-    Om icke-nil s} kommer editf|nstret att synas samtidigt som
-    KOM-f|nstret n{r ett nytt inl{gg eller en kommentar skrivs. Om nil
-    s} anv{nds KOM-f|nstret {ven som edit-f|nster.
-
-
-kom-created-texts-are-read	     	     t
-
-    Om icke-nil s} markeras alla texter som skapas av anv{ndaren som
-    l{sta. 
-
-
-kom-reading-puts-comments-in-pointers-last   t
-
-    Om nil s} skrivs rader av typen
-    "Kommentar i text N av NN" i inl{ggshuvudet. Om icke-nil s} skrivs
-    dessa rader ut efter sj{lva inl{gget.
-
-
-kom-print-number-of-unread-on-entrance       t
-
-    Om icke-nil s} skrivs antalet ol{sta i ett m|te ut s} fort
-    anv{ndaren g}r in i ett m|te.
-
-
-kom-presence-messages                        t
-
-    Om icke-nil s} skriver klienten ut fortl|pande rapporter om vilka
-    som g}r in i och ut ur LysKOM.
-
-
-kom-presence-messages-in-buffer              presence
-
-    Denna flagga reglerar vilka av KOMs meddelanden som skrivs in i
-    sj{lva KOM-bufferten. De som inte skrivs in i bufferten f}s enbart
-    p} meddelanderaden och |vriga skrivs b}de i meddelanderaden och i
-    bufferten. Denna flagga kan anta tre v{rden:
-
-    nil:        Inga n{rvaromeddelanden skrivs ut.
-    presence:   Meddelanden om vem som g}r in i och ut ur skrivs in i
-                bufferten, |vriga meddelanden skrivs endast ut p}
-		meddelanderaden. 
-    t           Alla meddelanden skrivs in i bufferten. Detta
-                inkluderar, f|rutom de som f}s genom att s{tta v{rdet
-		till "presence", {ven meddelanden om vad olika personer,
-		som {r i samma m|te som du, g|r.
-
-
-lyskom-to-be-printed-before-prompt           nil
-
-    En str{ng som skrivs ut f|re varje prompt.
-
-
-kom-show-where-and-what                      t
-
-    Om icke-nil s} skriver klienten ut vilken maskin varje anv{ndare
-    k|r ifr}n samt vad han h}ller p} med n{r kommandot "Vilka {r
-    inloggade" ges.
-
-
-kom-read-depth-first                         t
-
-    Om icke-nil s} l{ses kommentarer och fotnoter f|re nya inl{gg.
-    Detta g|r att kommentartr{d s|ks av djup-f|rst. Om flaggan s{tts
-    till nil s} g|rs s|kningen bredd-f|rst.
-
-
-
-VARIABLER
-
-Det finns ett antal (f.n. en) variabler som man kan styra
-elispklientens uppf|rande med. Dessa {r inte flaggor i den meningen
-att de inte bara kan anta ett av flera f|rdefinierade v{rden, utan kan
-anta n{stan vilka v{rden som helst. Variabler i emacs s{tts p} samma
-s{tt som flaggor.
-
-
-kom-mercial
-
-    Denna variabel inneh}ller den str{ng som skrivs ut varje g}ng man
-    inte har n}got nytt att l{sa. Anv{ndaren uppmuntras att anv{nda
-    humor och kvickhet i anv{ndandet av den.
-
-
-
-ENVIRONMENTVARIABLER
-
-KOMSERVER			Default komserver. Om KOMSERVER inte {r
-				satt s} v{ljs "nanny.lysator.liu.se".
-
-KOMNAME				Default komnamn. Om KOMNAME {r satt s}
-				fr}gar klienten inte efter ditt namn
-				vid f|rsta inloggningen. L|senord
-				m}ste d{remot alltid matas in.
-
-
-
-BUGGRAPPORTER
-
-Det finns troligtvis m}nga fel i klienten. Om du st|ter p} n}got som
-borde fungera annorlunda, eller som inte fungerar alls, s} skriv ett
-inl{gg i m|tet "LysKOM Elisp-klient; buggar, nyheter och annat." Om
-felet {r s} allvarligt att det inte g}r, s} skicka mail till
-bug-lyskom@lysator.liu.se eller kom@lysator.liu.se. Synpunkter p} den
-h{r texten eller andra manualer kan ocks} skickas dit.
-
-
-
-FILER
-
-LLL:/usr/local/lib/elisp/lyskom.el	Senaste versionen av klienten.
-nanny:~ftp/pub/lyskom/lyskom-ver.nr.elc	D:o
-
-
-Happy hacking!
-				/ceder
-				/Inge
diff --git a/doc/fileformat b/doc/fileformat
deleted file mode 100644
index 18ade8023..000000000
--- a/doc/fileformat
+++ /dev/null
@@ -1,26 +0,0 @@
-Detta {r en beskrivning p} det filformat som anv{nds av ramkomd. 
-
-ramkomd ver 1.00 sparar all data en g}ng ungef{r var 5:e minut. Vid
-uppstart l{ser den in den sparade filen. Innan filen sparas tas en
-backup av den. Det finns allts} alltid minst en, och f|r det mesta
-tv}, kopior av inneh}llet.
-
-Format:
-
-dirty-flagga		6 tecken som antingen {r DIRTY\n eller CLEAN\n
-next_free_num
-conference 1 ... conference (next_free_num-1)
-person 1 ... person (next_free_num-1)
-next_text_num
-text_stat 1 ... text_stat (next_text_num-1)
-text_mass 1 ... text_mass (next_text_num-1)
-
-
-B}de conference, person, text_stat och text_mass sparas som
-	@		f|r att indikera att den inte existerar
-	+ data		d{r data sparas med hj{lp av rutinerna i 
-			ram-output.c.
-
-Text_mass: texter som inte existerar sparas som "0H".
-
-K{llkodsfiler: ram-cache.c och ram-output.c inneh}ller det v{sentligaste.
\ No newline at end of file
diff --git a/doc/ideer/cache b/doc/ideer/cache
deleted file mode 100644
index 2ad9e9059..000000000
--- a/doc/ideer/cache
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Linus Tue May  8 20:49:06 MET DST 1990 */
-cache	komma ih}g
-
-Gr{nssnittet mellan cache och ldb m}ste specificeras.
-Mina ideer {r att varje anrop i ldb borde f|ljas av ett,
-n{stan identiskt anrop i cache som g|r samma sak fast ih}gkommet.
-Samma parametrar borde skickas ocks} s} att det inte beh|vs f|r mycket
-ny doc.
-
-Hmm folk har ju redan jobbat med detta. Jag dyker vidare ---->
-
-
-Jag skall g|ra en tabell:
-
-ldb funktioner                                                        cache funktioner
-      
-
-ldb_open ( void );                                                    saknar motsvarighet
-ldb_close ( void );                                                   saknar motsvarighet
-
-bool ldb_create_person ( Pers_no pers_no, Person * person );          bool cached_create_person ( Pers_no pers_no, Person * person );          cached_create_person 
-Person * ldb_read_person ( Pers_no pers_no );                         Person * cached_read_person ( Pers_no pers_no );
-
-bool ldb_update_person ( Pers_no pers_no, Person * person );          bool cached_update_person ( Pers_no pers_no, Person * person );           
-bool ldb_delete_person ( Pers_no pers_no );                           bool cached_delete_person ( Pers_no pers_no );                             
-Conf_no ldb_create_conf ( Conference * conference );                  Conf_no cached_create_conf ( Conference * conference );                    
-Conference * ldb_read_conf ( Conf_no conf_no );                       Conference * cached_read_conf ( Conf_no conf_no );                         
-bool ldb_update_conf ( Conf_no conf_no, Conference * conference );    bool cached_update_conf ( Conf_no conf_no, Conference * conference );      
-bool ldb_delete_conf ( Conf_no conf_no );                             bool cached_delete_conf ( Conf_no conf_no );                               
-Text_no ldb_create_tstat ( Text_stat * text_stat );                   Text_no cached_create_tstat ( Text_stat * text_stat );                     
-Text_stat * ldb_read_tstat ( Text_no text_no );                       Text_stat * cached_read_tstat ( Text_no text_no );                         
-bool ldb_update_tstat ( Text_no text_no, Text_stat * text_stat );     bool cached_update_tstat ( Text_no text_no, Text_stat * text_stat );       
-bool ldb_delete_tstat ( Text_no text_no );                            bool cached_delete_tstat ( Text_no text_no );                              
-Text_index ldb_create_text ( String text );                           Text_index cached_create_text ( String text );                             
-String ldb_read_text ( Text_index text_offset );                      String cached_read_text ( Text_index text_offset );                        
-bool ldb_delete_text ( Text_index text_offset );                      bool cached_delete_text ( Text_index text_offset );                        
diff --git a/doc/ideer/cache-tankar b/doc/ideer/cache-tankar
deleted file mode 100644
index ee47c68ba..000000000
--- a/doc/ideer/cache-tankar
+++ /dev/null
@@ -1,114 +0,0 @@
-Senast {ndrad av Linus Wed May  9 20:19:54 MET DST 1990
-
-Nu skall vi se om jag kan r{ta ut mina(=Linus) tankebanor:
-
-cache	komma ih}g.
-
-Cachen kommer ih}g lite av varje s} att detta inte beh|ver h{mtas fr}n
-disk varje g}ng.
-
-Jag(=Linus) anser att det som b|r kommas ih}g {r ungef{r det som man
-ville }t senast. Och kanske att n}gra objekt som man verkligen vet
-refereras till ofta samt {r relativt sm} kanske ocks} borde cachas.
-
-Vi skall se vilka olika typer av objekt som finns:
-
-Conf_list
-Conference
-Person
-Text_stat
-undertyper till dessa.
-
-Connection  sparas inte p} disk. Skall cache ta hand om detta eller
-	    skall det finnas n}gon annanstans. Cachen beh|ven nog
-	    tillg}ng till denna information i alla fall.
-
-F|r varje objekt som {r cachat m}ste lagras:
-
-    - hela dataarean
-    - om huruvida den {r uppdaterad p} skivan
-    - om huruvida detta objekt f}r flyttas i minnet.
-    - senaste g}ngen n}gon tittade p} denna post. (det r{cker faktiskt
-      med att h}lla reda p} ordningen i vilken de olika cachade
-      enheterna anv{ndes men d} kan kanske inte storleken anv{ndas f|r
-      optimering)
-    - storleken p} det lagrade objektet. (f|r att optimera sj{lva
-      cache-funktionen g{ller det ju att minimera kvadraten av den tid
-      varje byte ligger i minnet i on|dan mellan }tkomsterna.
-      Snabbheten som vinns med cachening {r ju sedan bara begr{nsad av
-      hur mycket minnesarea man har tillg}ng till.)
-
-F|r varje typ av vilka n}gra {r cachade m}ste lagras:
-
--   en index-lista p} vilka som finns cachade (kanske hashtabell s}
-    att man snabbt kan hitta den men det {r nog on|digt).
-
-
-
-Vilka objekt m}ste eller borde finnas i minnet alltid?
-(Alltid i detta fall {r v{l mellan tv} "atomiska" anrop.)
-
-Conf_list	   Ja, redan klart
-Conference	   Nej inte tvunget.
-Person		   De som {r inloggade. (Krav finns redan p} detta pga
-		   strukturen av Connection-structen.)
-Connection	   Ja, finns ju inte p} disk :-).
-Text_stat	   Nej.
-
-
-Vilka objekt skall man str{va efter att ha i minnet f|r att ha i
-minnet alltid? (F|r att vinna tid naturligtvis)
-
-Conf_list	    Ja, ingen kommentar beh|vs
-Conference	    Man borde kunna f|rs|ka att alltid ha de
-		    konferenser som en anv{ndare kommer till n{sta
-		    g}ng i minnet alltid.
-		    
-		    Jag(=Linus) skulle egentligen vilja g} s} l}ngt att jag
-		    |nskar att man kunde ha alla m|ten som n}gon
-		    inloggad person har ol{sta inl{gg i inne.
-
-		    Det borde inte vara speciellt sv}rt att h}lla reda
-		    p} n{r det skapas nya inl{gg och d} m}ste v{l {nd}
-		    de m|tet l{sas in s} det blir bara sm} problem.
-
-		    N{r (och var) sker egentligen kollen efter nya
-		    nyheter i m|ten personen inte {r i. Det borde vara
-		    n{r han skall g} till n{sta m|te. Jag(=Linus)
-		    hittar inte denna s} jag misst{nker att det inte
-		    {r klart.
-
-		    L}t oss str{va efter detta:
-
-		    F|r varje person som {r inloggat finns Person
-		    Connection och Conference som han {r i och
-		    Conference som han kommer till n{sta g}ng i
-		    minnet.
-
-Person		    Bara de som {r inloggade. Det finns v{l ingen
-		    anledning att f|rs|ka gissa sig till vem som
-		    kommer att logga in h{rnest eller vem som kommer
-		    att fr}gas efter statusen p}.
-#if det_fungerar_som_jag_trodde
-		    D{remot skulle det kanske vara trevligt om man
-		    hade en lista p} alla personers namn i minnet
-		    alltid s} att man inte beh|ver l{sa in namnet n{r
-		    n}gon vill l{sa en text.
-#endif
-
-Connection	    :-)
-
-Text_stat	    Det vore bra om statusen f|r n{sta text fanns inne
-		    i minnet. N{sta text {r n{sta text en person vill
-		    l{sa.
-
-		    [nnu b{ttre vore om status f|r alla texter som
-		    varje inloggad person har ol{sta i ett m|te samt
-		    status f|r alla som de ol{sta kommenterar samt
-		    f|rsta (5-50) ol{sta i n{sta m|te som varje person
-		    kommer till.
-
-Texter		    Texten f|r n{sta inl{gg som personen kommer till
-		    samt till inl{gget som kommentera av aktuellt
-		    inl{gg vore bra att ha inne redan.
-		    Kanske {ven texten f|r f|rsta inl{gget i n{sta m|te.
\ No newline at end of file
diff --git a/doc/ideer/cache.spec b/doc/ideer/cache.spec
deleted file mode 100644
index e4001a3db..000000000
--- a/doc/ideer/cache.spec
+++ /dev/null
@@ -1,73 +0,0 @@
-
-(233878) 90-05-29  10.04 /64 rader/ ceder (Per Cederqvist/p 334)
-Mottagare: LysKom implementationsdiskussion (m 376) <309>
-Markerad av: ceder (Per Cederqvist/p 334)
-Markerad av 2 andra personer.
-[rende:  cache
-------------------------------------------------------------
-Heureka! Jag har funnit det!
-
-Nu vet jag hur vi ska veta vad vi kan sl{nga ut, vad som {r modifierat,
-vad som vi b|r h}lla kvar i minnet till varje pris, vad vi m}ste
-h}lla kvar till slutet p} detta atomiska anrop. L|sningen {r
-simpel n{r man v{l kommer p} den. L|sningen kom till mig alldeles
-nyss n{r jag l}g i min s{ng och funderade p} om jag skulle g}
-upp eller f|rs|ka forts{tta sova mitt i allt ov{sen. (De byter
-sopnedkast :-( ) Nu ska vi se om jag kan lugna ner mig s} att
-jag kan skriva in h{r. Om ni inte f|rst}r n}got av vad jag skriver
-h{r, s} f|rtvivla icke. Jag har det nerskrivet p} papper ocks},
-jag kommer i alla fall att kunna tyda det och minnas min ide....
-
-typedef struct {
- Pers_node  *prev, *next;
- Person     *person;
- u_char      ref_count;
- Bool        is_dirty;
- time_t      first_modified;
- Pers_node  *next_dirty;
-} Pers_node;
-
-F|r varje Person-struct som man har i minnet har man en motsvarande
-Pers_node. Med hj{lp av f{lten prev/next skapar man tre (3) dubbell{nkade
-listor:
-
-I)   Objekt som ej refereras just nu.
-II)  Objekt som l{mnats ut under detta atomiska anrop.
-III) Objekt som {r l}sta i minnet. (Inloggade personer, m|ten
-     som folk befinner sig i.)
-
-login() |kar ref_count och l{gger in personen sist p} lista III.
-logout() minskar ref_count, och om den blev 0 s} flyttar den
-personen till lista II.
-
-I slutet av varje atomiskt anrop anropas en funktion som flyttar
-alla objekt i lista II till lista I.
-
-mark_person_as_changed() kolla is_dirty-bitten. Om objektet redan
-var dirty s} g|rs ingenting. Annars l{ggs objektet in sista p}
-dirty-listan (next_dirty), first_modified = time(NULL);
-
-N{r man beh|ver mer plats {r det bara att ta det f|rsta objektet
-p} lista I som inte {r dirty och sl{nga det.
-
-Efter varje atomiskt anrop s} sparar man alla eller de flesta
-objekten p} dirty-listan. Det kan kanske vara l{mpligt att anv{nda
-f|ljande villkor f|r att kolla om det {r dags att spara eller
-inte:
-
-  if ( ref_count == 0 || time() - first_modified > SYNC_INTERVAL)
-       write_it();
-
-Jo, en sak till. Pers_node:erna flyttar aldrig p} sig. Det {r
-bara pekarna som {ndras. F|r att hitta fr}n ett nummer till en
-visst person har man n}gon form av hash-tabell som pekar p} Pers_node:erna.
-
-N{r jag t{nker efter beh|ver man kanske ha med
- Pers_no   pers_no;
-i Pers_node-structen.
-
-L}ter det h{r vettigt, eller sover jag fortfarande?
-
-				/ceder
-(Text 233878)------------------------------
-(Kommentar i (Text 233935) av Pell Pell Pell)
diff --git a/doc/ideer/prot-B-analys b/doc/ideer/prot-B-analys
deleted file mode 100644
index 2d9bff3a7..000000000
--- a/doc/ideer/prot-B-analys
+++ /dev/null
@@ -1,325 +0,0 @@
-Filen doc/prot-B-analys
-Bellman hackade mera 1990-12-19, efter fysiskt m|te under kv{llen.
-Aronsson was here
-20 oktober 1990
-
-
-			    LysKOM Analys
-		   --------------------------------
-		 Protokoll B mellan klient och server
-		   --------------------------------
-			   av Lars Aronsson
-		      <Aronsson@Lysator.LiU.SE>
-
-
-
-				LysKOM
-
-LysKOM {r ett datakonferenssystem. Andra liknande system {r QZ-KOM och
-PortaCOM. LysKOM {r Copyright (C) 1990 datorf|reningen Lysator vid
-Universitetet och Tekniska H|gskolan i Link|ping. Var och en till}ts
-fritt kopiera, {ndra och distribuera LysKOM dokument och program,
-givet att mottagarna ges samma r{ttigheter. Varken Lysator eller dess
-medlemmar tar n}got som helst ansvar f|r dokumentens eller programmens
-riktighet eller f|ljderna av deras anv{ndande.
-
-			    Den h{r texten
-
-Den h{r texten {r en analys inf|r specifierandet av version B av det
-protokoll som anv{nds mellan en klient (anv{ndarens program) och en
-server (databasen).
-
-
-
-			      Multimedia
-
-F|r att kunna inf|ra multimedia i LysKOM, g}r vi |ver fr}n att ha
-texter till att ha generella inl{gg (eng. document?).  De har som
-tidigare ett huvud (textstat) och en kropp.  Huvudet ser ut som innan
-(n{stan), medan kroppen byts ut mot en array av { contentstype, string
-}.  I texthuvudet byts textl{ngden ut mot en array av { contentstype,
-length }.  F{ltet no_of_lines tas bort helt.
-
-Contentstype {r en enum som anger vilken typ av data som str{ngen
-inneh}ller, t ex text, bilder, musik, osv.  De v{rden som denna enum
-kan anta best{ms centralt av LysKOM-gruppen (dvs oss).  Om n}gon vill
-ha en egen sort f|r att experimentera med, kan de beg{ra en s}dan av
-oss.  N{r de kommer och s{ger "den h{r typen av data {r kul - vill ni
-ha den?" kan vi best{mma om vi vill g|ra den officiell.
-
-De v{rden som finns initialt {r f|ljande:
-	0	binary		Anv{nds n{r inget annat passar
-	1	iso8859_1	Text lagrad enligt iso8859_1
-	2	iso8859_1_fill	Dito, men klienten f}r l{gga in
-				newline d{r den vill f|r att bryta
-				rader.
-	3	rfc_header	Kan anv{ndas f|r inkommande rfc-mail
-
-F|r att avg|ra vad som {r {renderad, kan f|ljande regel anv{ndas:
-	Omm 1:a dataf{ltet {r av typen iso9959_1 eller
-	iso8859_1_fill, s} best}r {renderaden av texten
-	fram till f|rsta \n i detta f{lt.
-
-
-
-			     Protokollet
-
-I protokollet ing}r f|ljande objekt av f|ljande typer:
-
-o  Tal		Ett icke-negativt decimalt heltal.
-o  Struct	En samling objekt.  Syntax:
-		{ obj1 obj2 obj3 ... objn }
-o  Str{ng	En radda av oktetter.  Syntax:
-		$nnnHxyzzy
-o  Array	Noll, ett eller flera objekt av samma typ.  Kan
-		inneh}lla upprepningar och/eller intervall.  Syntax:
-		[ antal obj1 obj2 obj3 ... objn ]
-o  Upprepning	Anv{nds inuti arrayer f|r att markera att ett visst
-		objekt upprepas ett antal g}nger.  Syntax:
-		*antal objekt		(Mellanslag mellan antal och objekt)
-o  Intervall	Anv{nds f|r att ange en konsekutiv f|ljd av heltal
-		inuti en array.  Syntax:
-		<f|rsta sista>
-
-Mellanslag runt specialtecknen {, }, [, ], < och > {r frivilliga.
-
-Bitstr{ngar {r bara ett specialfall av structar.  De skickas allts}
-som { 1 0 0 1 0 }.
-
-Om det kommer fler f{lt i en struct {n vad man v{ntat sig, hoppar man
-bara |ver dessa f{lt.  T{nk dock p} att det kan f|rekomma nya
-structar, arrayer och str{ngar inuti en struct.
-
-
-
-
-		    Kommunikation med andra media
-
-F|r att m|jligg|ra utbyte av inl{gg mellan LysKOM och andra media, t
-ex email, Usenet News, vfsh, inf|rs n}gra nya misc-items.  Dessa {r
-f|ljande: x-author, x-creation-time, x-recpt, x-cc-recpt, x-sent-by
-och x-sent-at, d{r x st}r f|r external.  X-author, x-recpt, x-cc-recpt
-och x-sent-by {r str{ngar, medan x-creation-time och x-sent-at {r
-struct tm med tidszon adderad.
-
-Dessa f{lt finns ungef{r s} h{r:
-
-x-author	Inleder en egen grupp.  M}ste f|ljas omedelbart av en
-		x-creation-time.  Endast en dylik grupp per inl{gg.
-
-x-recpt		Noll, ett eller flera s}dana h{r kan f|lja efter ett
-		local-no.  De
-
-
-----------------------------------------------------------------------
-
-
-
-			   Remote Variables
-
-RV {r en helt ny (tror jag) ide. RV {r en klass av protokoll som kan
-implementeras ovanp} klassen RPC. Det g}r ut p} att varje RPC-anrop {r
-en ARRAY (ASN.1 SEQUENCE OF) d{r varje element {r endera en
-tilldelning (Assignment) eller referens (Reference). Varje anrop
-resulterar i ett svar (det {r ju RPC), som ocks} {r en ARRAY med lika
-m}nga element i motsvarande ordning.
-
-En Assignment resulterar i OK eller Error, beroende p} om variabeln
-fanns, om vi fick skriva den, etc. En Reference resulterar i ett OK
-och variabelns v{rde, eller Error. Med Error f|ljer alltid errno och
-kanske mer info, som i protokoll A.
-
-Ibland vill man inte n|ja sig med Assignment. Man kan vilja ha += och
--= (&=, |= f|r BITSTRING).
-
-Det kanske inte {r l{mpligt med RV |verallt? Det r{cker ju med att
-*ett* av RPC-anropen k|r RV.
-
-
-----------------------------------------------------------------------
-ceder:
-
-det blir t{ta ]tkomstkollar (p} varje RV)
-
-en anv{ndare kan skicka en RPC med m}nga RV  och l{gga beslag p}
-servern
-
-stort tillf{lligt allokerat minne i servern.
-
-----------------------------------------------------------------------
-
-Man kan identifiera klasserna
-pers
-conf
-text
-sess
-med alla kan man g|ra create, delete
-deras nummer verkar som parameter till andra v{rden (sina attribut)
-eller som dubbelparameter till t.ex. membership eller mottagare
-
-----------------------------------------------------------------------
-SESSION
-broadcast textnummer som skall skickas : Text-No
-Who-Info (Session {r parameter)  person : Pers-No
-Who-Info (Session {r parameter)  what-am-i-doing : HOLLERITH
-Who-Info (Session {r parameter)  working-conference : Conf-No
-who-is-on : ARRAY Session
-	l{ses - session blir en slags local-pers-no
-	login kan bli create-session... Hmmm...
-change-what-i-am-doing str{ngen : HOLLERITH
-enable (Session {r underf|rst}dd) ena-level : INTEGER
-logout : void
-	en liten void variabel som skrives
-	(eller avl{sning av sessionstid?)
-pepsi : Conf-No
-login (Pers-No {r parameter, session {r underf|rst}dd) password : HOLLERITH
-	skrives
-logout	: VOID
-	skrives
-----------------------------------------------------------------------
-PERSON
-Person (Pers-No {r parameter)  username : HOLLERITH
-Person (Pers-No {r parameter)  privileges : Priv-Bits
-Person (Pers-No {r parameter)  flags : Personal-Flags
-Person (Pers-No {r parameter)  last-login : Time-Date
-Person (Pers-No {r parameter)  user-area : Text-No
-Person (Pers-No {r parameter)  total-time-present : INTEGER
-Person (Pers-No {r parameter)  sessions : INTEGER
-Person (Pers-No {r parameter)  created-lines : INTEGER
-Person (Pers-No {r parameter)  created-bytes : INTEGER
-Person (Pers-No {r parameter)  read-texts : INTEGER
-Person (Pers-No {r parameter)  no-of-text-fetches : INTEGER
-Person (Pers-No {r parameter)  created-persons : INTEGER
-Person (Pers-No {r parameter)  created-confs : INTEGER
-Person (Pers-No {r parameter)  first-created-local-no : INTEGER
-Person (Pers-No {r parameter)  no-of-created-texts : INTEGER
-Person (Pers-No {r parameter)  no-of-marks : INTEGER
-Person (Pers-No {r parameter)  no-of-confs : INTEGER
-create-pers nummer som har skapats : Pers-No
-	Man l{ser helt enkelt av detta elektriska v{rde
-create-person (Pers-No {r parameter) name : HOLLERITH
-create-person (Pers-No {r parameter) password : HOLLERITH
-get-created-texts (person : Pers-No;
-  first : Local-Text-No;
-  no-of-texts : INTEGER; {r parameter) : Text-List
-set-passwd (Pers-No; my-old-password : HOLLERITH
-	{r parameter) new-password : HOLLERITH
-set-priv-bits (Pers-No {r parameter) : Priv-Bits
-----------------------------------------------------------------------
-CONFERENCE
-set-garb-nice (Conf-No {r parameter) : Garb-Nice
-set-permitted-submitters (Conf-No {r parameter) : Conf-No
-set-presentation (Conf-No {r parameter) : Text-No
-set-super-conf (Conf-No {r parameter) : Conf-No
-set-supervisor (Conf-No {r parameter) : Conf-No
-set-unread (Conf-No {r parameter) : INTEGER
-	Man kunde ju ha Conf+Pers {r parameter...
-set-etc-motd (Conf-No {r parameter) : Text-No
-lookup-name (conf-name : HOLLERITH {r parameter) : Conf-List
-	eller bara en ARRAY Conf-No ?
-get-map (conference : Conf-No;
-  first : Local-Text-No;
-  no-of-texts : INTEGER {r parameter ) : Text-List
-create-conf confnummer som har skapats : Conf-No
-delete-conf confnummer som skall raderas : Conf-No
-Conference (Conf-No {r parameter)  name : HOLLERITH
-Conference (Conf-No {r parameter)  type : Conf-Type
-Conference (Conf-No {r parameter)  creation-time : Time-Date
-Conference (Conf-No {r parameter)  last-written : Time-Date
-Conference (Conf-No {r parameter)  creator : Pers-No
-Conference (Conf-No {r parameter)  presentation : Text-No
-Conference (Conf-No {r parameter)  supervisor : Conf-No
-Conference (Conf-No {r parameter)  permitted-submitters : Conf-No
-Conference (Conf-No {r parameter)  super-conf : Conf-No
-Conference (Conf-No {r parameter)  msg-of-day : Text-No
-Conference (Conf-No {r parameter)  nice : Garb-Nice
-Conference (Conf-No {r parameter)  no-of-members : INTEGER
-Conference (Conf-No {r parameter)  first-local-no : Local-Text-No
-Conference (Conf-No {r parameter)  no-of-texts : INTEGER
-----------------------------------------------------------------------
-TEXT
-add-misc-info (Text-No {r parameter) : Misc-Info
-sub-misc-info (Text-No {r parameter) : Misc-Info
-get-misc-info (Text-No {r parameter) : ARRAY Misc-Info
-get-misc-info (Text-No, Misc-Type {r parameter) : ARRAY Misc-Datum
-	Kanske text-conference?
-get-text (text : Text-No;
-  start-char : INTEGER;
-  end-char : INTEGER {r parameter ) : HOLLERITH;
-create-text nummer som har skapats : Text-No
-delete-text textnummer som skall raderas : Text-No
-	Man skriver detta elektriska v{rde
-Text-Stat (Text-No {r parameter)  author : Pers-No
-Text-Stat (Text-No {r parameter)  creation-time : Time-Date
-Text-Stat (Text-No {r parameter)  no-of-links : INTEGER
-Text-Stat (Text-No {r parameter)  no-of-marks : INTEGER
-Text-Stat (Text-No {r parameter)  misc-info : ARRAY Misc-Info
-create-text (Text-No {r parameter) text : HOLLERITH
-create-text (Text-No {r parameter) misc-info : ARRAY Misc-Info
-----------------------------------------------------------------------
-TEXT-TEXT
-add-comment { comment : Text-No; original : Text-No; }
-add-footnote : { footnote : Text-No; original : Text-No; }
-sub-comment (comment : Text-No; original : Text-No {r parameter ) : VOID
-sub-footnote (footnote : Text-No; original : Text-No {r parametrar) : VOID
-----------------------------------------------------------------------
-SERVER
-shutdown exit-val : INTEGER
-	skrives
-get-info  version : INTEGER;
-get-info  conf-pres-conf : Conf-No;
-get-info  pers-pres-conf : Conf-No;
-get-info  motd-conf : Conf-No;
-get-info  kom-news-conf : Conf-No;
-get-info  motd-of-lyskom : Text-No;
-set-motd-lyskom : Text-No
-	skrives
-get-time (delas? Obs! synkproblem) : Time-Date
-sync : void
-	liten void som skrives
-----------------------------------------------------------------------
-PERSON-CONFERENCE
-sub-member (conference : Conf-No; person : Pers-No) : VOID
-add-member : { conference : Conf-No; new-member : Pers-No; }
-	|msesidiga. Variablerna kan inte bindas }t endera h}llet...
-add-member priority : INTEGER;
-add-member where : INTEGER;
-	conf & pers blir parametrar.
-Membership (Pers-No och Conf-No {r parameter)  last-time-read : Time-Date
-Membership (Pers-No och Conf-No {r parameter)  priority : INTEGER
-Membership (Pers-No och Conf-No {r parameter)  last-text-read : Local-Text-No
-Membership (Pers-No och Conf-No {r parameter)  read-texts : ARRAY Local-Text-No
-	?
-get-members-params (conference : Conf-No;
-  first : INTEGER;
-  no-of-members : INTEGER {r parameter) : Member-List
-get-membership-params (person : Pers-No;
-  first : INTEGER;
-  no-of-confs : INTEGER;
-  mask : BITSTRING {want-read-texts} {r parameter) : Membership-List
-----------------------------------------------------------------------
-CONFERENCE-TEXT
-add-recipient (Text-No {r parameter) : Misc-Info
-sub-recipient (text : Text-No; conference : Conf-No) : VOID
-	?asymmetri?
-----------------------------------------------------------------------
-PERSON-TEXT
-get-marks (kan delas?) : Mark-List
-Mark (Text-No; type : INTEGER {r parameter ) : VOID
-	??
-mark-as-read (Conf-No; texts : ARRAY Local-Text-No {r parameter) : VOID
-	?? Egentligen en loop -- ge mig forth
-mark-text (Text-No {r parameter) mark-type : INTEGER
-	kan vara snyggt... kan l{sas/skrivas (?) ORas ANDas?
-----------------------------------------------------------------------
-13 76 345 3 { 4711 4701 } 345 3 { 74 75 76 }
-
-(60 + 43 = 103)
-13 75 6 { 4711 74 4701 74 4711 75 4701 75 4711 76 4701 76  }
-=13 6 { =99 =0000 %54 36 %54 36 =76 =1001 }
-
-(26 + 179 = 205)
-13 13 74 14 13 75 15 13 76
-=13 99999999999999999999999999999999999999999999999999999999999999999999999999999999
-%14 54 36
-=15 99999999999999999999999999999999999999999999999999999999999999999999999999999999
diff --git a/doc/ideer/versioner b/doc/ideer/versioner
deleted file mode 100644
index f9c306f62..000000000
--- a/doc/ideer/versioner
+++ /dev/null
@@ -1,129 +0,0 @@
-Filen 2kom/doc/versioner
-14 oktober 1990
-Aronsson was here
-
-
-			   LysKOM Projektet
-		   --------------------------------
-	      Hantering av {ndringsf|rslag och versioner
-		   --------------------------------
-			   av Lars Aronsson
-		      <Aronsson@Lysator.LiU.SE>
-
-
-
-				LysKOM
-
-LysKOM {r ett datakonferenssystem. Andra liknande system {r QZ-KOM och
-PortaCOM. LysKOM {r Copyright (C) 1990 datorf|reningen Lysator vid
-Universitetet och Tekniska H|gskolan i Link|ping. Var och en till}ts
-fritt kopiera, {ndra och distribuera LysKOM dokument och program,
-givet att mottagarna ges samma r{ttigheter. Varken Lysator eller dess
-medlemmar tar n}got som helst ansvar f|r dokumentens eller programmens
-riktighet eller f|ljderna av deras anv{ndande.
-
-			    Den h{r texten
-
-Den h{r texten {r avsedd f|r internt bruk i Lysators LysKOM-projekt,
-den {r inte avsedd f|r spridning. Detta hindrar inte att den kan
-till{mpas i andra, liknande projekt.
-
-Texten beskriver hur {ndringsf|rslag och bugrapporter tas emot, hur
-specifikationer uppr{ttas f|r nya versioner (av programvara och
-dokument) samt hur dessa specifikationer implementeras.
-
-		       Kontinuerlig utveckling
-
-LysKOM {r en produkt under kontinuerlig utveckling. LysKOM kommer
-aldrig att bli f{rdigt, det kommer alltid (s} l{nge LysKOM anv{nds)
-att beh|vas nya versioner. Detta placerar LysKOM i samma kategori av
-produkter som operativsystem eller personbilar (varje }r en ny
-}rsmodell av samma bil).
-
-Det andra s{ttet att utveckla programvara {r det som l{rs ut i skolans
-kurser. D{r samlas ett projekt runt en kravspecifikation, utvecklar
-systematiskt och l{mnar ifr}n sig en f{rdig produkt som p} sin h|jd
-beh|ver lite bugfixar i efterhand.
-
-Skillnaden mellan skolmodellen och kontinuerlig utveckling {r att i
-det senare fallet kommer en uppdaterad kravspecifikation (ofta
-underf|rst}dd som en massa bugrapporter eller "ideer") innan den
-f|rsta {r implementerad. Detta framkallar l{tt stress -- hur skall man
-hinna hacka in alla nya {ndringar? Och med stressen f|ljer missmodet
-och tr|ttheten.
-
-L|sningen f|r att undvika den stressen {r att h}lla huvudet kallt och
-inte inf|ra alla f|reslagna {ndringar. I st{llet planerar man vissa
-versioner eller utg}vor av programvaran. Varje version ges en skriven
-kravspecifikation d{r en lagom protion av inkommna {ndringsf|rslag tas
-med. D{refter implementeras kravspecifikationen enligt den vanliga
-skolmodellen. Versionen avslutas (f|rklaras f{rdig och s{tts i drift)
-innan kravspecifikationen f|r n{sta version f}r tas fram.
-
-			       Bugfilen
-
-Med bugrapporter avses h{r rapporter om uppt{ckta fel, f|rslag till
-{ndringar av funktioner samt allm{nna ideer om framtida utveckling.
-Jag ser ingen anledning att skilja p} desssa kategorier.
-
-Med program av typen LysKOM kommer anv{ndarna med bugrapporter utan
-att man ber om det. Dessutom kommer man som utvecklare naturligtvis
-ocks} med egna f|rslag. F|r att inte drunkna i alla rapporter m}ste
-man ta hand om dem systematiskt. Ett s{tt {r att tillhandah}lla en
-speciell blankett, som IDA gjorde i de gamla skrivarrummen. Ett annat
-{r att h}lla en mailadress dit man kan skicka sina rapporter. I KOM
-verkar det naturligt att h}lla ett m|te f|r detta {ndam}l. Men d}
-m}ste ocks} n}gon regelbundet l{sa detta m|te och spara alla
-rapporter.
-
-Alla bugrapporter som kommer in skall ges ett l|pnummer och sparas i
-en s.k. bugfil. Eftersom det inte alltid {r klart vilken del av
-programmet som skall {ndras f|r att }tg{rda en viss bugrapport, h}lls
-bara en bugfil f|r hela projektet. Uppdateringen av bugfilen sker
-alltid parallellt med andra aktiviteter. N}gon b|r vara ansvarig f|r
-uppdateringen, men filen tillh|r {nd} projektet, inte de medlemmar som
-f|r tillf{llet deltar i det.
-
-			      Ny version
-
-En ny version av LysKOM (eller av n}gon del, t.ex. en klient eller ett
-protokoll) b|rjar med att n}gon eller n}gra personer f}r lust att
-arbeta. De v{ljer d} ur bugfilen n}gra rapporter de tycker {r viktiga
-att }tg{rda. Inte fler {n att de tror sig klara av p} {ndlig tid, men
-inte heller f|r f}. De tar sig ocks} ett nytt versionsnummer (eller
-versionsbokstav f|r LysKOM protokoll).
-
-Nu {r versionen ig}ng och ingen annan version av samma program f}r
-p}b|rjas innan denna {r klar. Varken av samma grupp eller av n}gon
-annan. En version kan dock n{r som helst l{ggas ner om
-gruppmedlemmarna {r |verens om att de {r p} fel sp}r.
-
-De bugrapporter som gruppen valt att }tg{rda markeras med
-versionsnumret i bugfilen. Rapporterna f}r dock ligga kvar i filen
-tills vidare. Det kan ju h{nda att versionen l{ggs ner innan den blir
-f{rdig och d} {r ju bugrapporten fortfarande giltig.
-
-			     Skolmodellen
-
-De bugrapporter som gruppen valt att }tg{rda sammanst{lls till en
-kravspecifikation. D{r skall ocks} beskrivas vilka andra delar (t.ex.
-dokument) som kommer att p}verkas. Hur gruppen har t{nkt l|sa
-problemet skriver de ner i en konstruktionsbeskrivning (eller
-designspecifikation). N{r den gamla koden {ndras skall en kopia av
-f|reg}ende version finnas kvar. Om den h{r versionen l{ggs ner innan
-den blir kvar, m}ste det finnas en som fungerar.
-
-Hur programutvecklingen fr}n ide till f{rdig produkt g}r till beskrivs
-i en massa b|cker och kurser p} skolan. Det beror kraftigt p} hur
-omfattande {ndringarna {r och vilka som arbetar med dem. Det skulle
-f|ra alltf|r l}ngt att beskriva utvecklingsprocessen h{r.
-
-			      Avslutning
-
-Det skall alltid finnas n}got s{tt att avg|ra om versionen {r f{rdig.
-Ett s{tt {r att l}ta anv{ndarna provk|ra och s{ga om de {ndringarna
-fungerar som det var t{nkt. Detta kallas betarelease p} grekiska. N{r
-alla {r n|jda och glada f|rklaras versionen som godk{nd och den tas i
-drift. Nu men inte tidigare f}r de }tg{rdade bugrapporterna raderas i
-bugfilen och k{llkoderna till tidigare versioner kastas. Avslutade
-versioner {r v{rda att firas.
diff --git a/doc/libraries b/doc/libraries
deleted file mode 100644
index d250422e0..000000000
--- a/doc/libraries
+++ /dev/null
@@ -1,4 +0,0 @@
-A list of all libraries, what they contain, and where they come from:
-
--lclient-sup	libraries/client-support	"RPC" functions. kom_*.
--l
\ No newline at end of file
diff --git a/doc/mall-swe.latexinfo b/doc/mall-swe.latexinfo
deleted file mode 100644
index 86f0578ce..000000000
--- a/doc/mall-swe.latexinfo
+++ /dev/null
@@ -1,90 +0,0 @@
-\documentstyle[12pt,latexinfo,lyskom]{rapport}		\c -*-latexinfo-*-
-\pagestyle{empty}
-
-\begin{document}
-\setfilename{foo
-.info}
-\bibliographystyle{alpha}
-
-\newindex{cp}
-\newindex{fn}
-
-\title{Konferenssystemet\\
-	LysKOM\\}
-
-\sp 3
-
-\author{Thomas Bellman\\
-	Lysator\\
-	Bellman@Lysator.LiU.SE\\
-	{\small Personnummer: 690423-4132}}
-
-
-\date{\idag}
-
-\maketitle
-\clearpage
-\vspace{0pt plus 1filll}
-Copyright \copyright{} 1990 Lysator
-
-\sp{2}
-
-Denna handledning beskriver konferenssystemet \LysKOM{}.  H\"{a}r
-beskrivs de allm\"{a}na principerna f\"{o}r \LysKOM{}, och de
-tj\"{a}nster som systemet tillhandah\aa{}ller, samt \"{a}ven de finesser
-som finns i \LysKOM{}.  Den beskriver \emph{inte} hur man anv\"{a}nder
-en klient f\"{o}r att k\"{o}ra \LysKOM{} eller hur man styr dessa
-klienter.  L\"{a}saren h\"{a}nvisas till respektive klients
-anv\"{a}ndarhandledning f\"{o}r denna information, till exempel
-\cite{LysKOM:TTY-client.swe}.
-
-
-\sp{2}
-\sp{4}
-Tillst\aa{}nd ges att kopiera denna manual och distribuera kopiorna,
-under f\"{o}ruts\"{a}ttning att ovanst\aa{}ende copyrightnot och denna
-text finns med p\aa{} alla kopior.
-
-\clearpage
-\pagestyle{headings}
-\pagenumbering{roman}
-
-
-\c	\tableofcontents
-
-\clearpage
-\pagenumbering{arabic}
-
-
-\node Top, Inledning, , dir    
-\comment  node-name,  next,  previous,  up
-
-\begin{menu}
-* Inledning::		Vad {r LysKOM?
-* Sakregister:Index:
-\end{menu}
-
-
-
-
-\node Inledning, Inledning, , top
-\comment  node-name,  next,  previous,  up
-\chapter{Inledning till LysKOM}
-\cindex{Inledning till LysKOM}
-\cindex{LysKOM, inledning}
-
-\section{Ett konferenssystem}
-
-...
-
-\subsection{Skilnader mot andra liknande system}
-
-\subsubsection{Usenet News}
-
-...
-...
-...
-
-\bibliography{referenser}
-
-\end{document}
diff --git a/doc/mall.latexinfo b/doc/mall.latexinfo
deleted file mode 100644
index 358f508fa..000000000
--- a/doc/mall.latexinfo
+++ /dev/null
@@ -1,77 +0,0 @@
-\documentstyle[12pt,latexinfo,lyskom]{report}		\c -*-latexinfo-*-
-\pagestyle{empty}
-
-\begin{document}
-
-
-\newindex{cp}
-\newindex{fn}
-
-\title{dbck --- Automatic LysKOM Database Integrity Checkprogram\\}
-
-\sp 3
-
-\author{Per Cederqvist\\
-	Lysator\\
-	ceder@lysator.liu.se}
-
-
-\date{\today}
-
-\maketitle
-\clearpage
-\vspace{0pt plus 1filll}
-Copyright \copyright{} 1990 Lysator
-
-\sp{2}
-
-This document describes...
-
-\sp{6}
-Tillst\aa{}nd ges att kopiera denna manual och distribuera kopiorna,
-under f\"{o}ruts\"{a}ttning att ovanst\aa{}ende copyrightnot och denna
-text finns med p\aa{} alla kopior.
-
-\clearpage
-\pagestyle{headings}
-\pagenumbering{roman}
-
-
-\tableofcontents
-
-\clearpage
-\pagenumbering{arabic}
-
-\setfilename{dbck.info}
-
-\begin{ifinfo}
-Copyright \copyright 1991 Lysator 
-\end{ifinfo}
-
-\node Top, dbck, (dir), (dir) 
-\comment  node-name,  next,  previous,  up
-
-\begin{menu}
-* Inledning::		Vad {r LysKOM?
-* Sakregister:Index:
-\end{menu}
-
-
-
-
-\node Inledning, Inledning, , top
-\comment  node-name,  next,  previous,  up
-\chapter{Inledning till LysKOM}
-\cindex{Inledning till LysKOM}
-\cindex{LysKOM, inledning}
-
-\section{Ett konferenssystem}
-
-...
-
-\subsection{Skilnader mot andra liknande system}
-
-\subsubsection{Usenet News}
-
-
-\end{document}
diff --git a/doc/man/Makefile b/doc/man/Makefile
deleted file mode 100644
index 1b91259d4..000000000
--- a/doc/man/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-MANDIR = /usr/local/man
-MANEXTS = 1 3 5 8
-
-all:;
-depend:;
-
-clean:
-	$(RM) *~ core
-	-for i in $(MANEXTS); \
-	do \
-	   echo making clean in directory man$$i; \
-	   (cd man$$i; $(RM) *~ core) \
-	done
-
-install:
-	for i in $(MANEXTS); \
-	do \
-	   for page in man$$i/*.$$i; \
-	   do \
-	      echo installing $$page; \
-	      install $$page $(MANDIR)/man$$i; \
-	   done \
-	done
-	ln $(MANDIR)/man8/ramkomd.8 $(MANDIR)/man8/lyskomd.8
diff --git a/doc/man/dbck.8 b/doc/man/dbck.8
deleted file mode 100644
index 66f32624a..000000000
--- a/doc/man/dbck.8
+++ /dev/null
@@ -1,105 +0,0 @@
-.\" $Id: dbck.8,v 1.5 1991/08/22 23:57:52 linus Exp $
-.\" $Date: 1991/08/22 23:57:52 $
-.TH dbck 8 "August 22, 1991"
-.SH NAME
-dbck - reports and corrects errors in the LysKOM database. This
-program is also used remove unreferenced texts from the texts file.
-.SH SYNOPSIS
-.B /usr/lyskom/bin/dbck 
-[
-.B -D
-.I database-directory
-] [
-.B -irvg
-]
-.SH DESCRIPTION
-This program should be run after something has happened that has made the
-database corrupted.
-.PP
-It fixes the database, checking all references.
-.PP
-With argument
-.B -g
-the file with texts are rewritten without all unreferenced texts and
-all pointers are adjusted. This does only happen if the database was
-correct.
-.PP
-If none of the options
-.B -r, -i
-or
-.B -g
-are given the database is not changed.
-.SH OPTIONS
-.TP
-.BI \-D " database-directory"
-Use the database in the
-.I database-directory
-as the target of the checkup.
-.br
-Example: If your database is in
-.ft B
-$HOME/lyskom/db
-.ft R
-you should use the command
-.ft B
-.br
-/usr/lyskom/bin/dbck -D $HOME/lyskom
-.ft R
-.TP
-.B \-i
-Run interactively asking the user questions.
-.TP
-.B \-r
-Repair simple errors without asking.
-.TP
-.B \-v
-Verbose mode. Report not only errors but other statuses of the
-database.
-.TP
-.B \-g
-Do the garbage collect of the texts part of the database. This is
-sometimes called a compression of the text but it only removes
-non-referenced texts.
-.SH NOTES
-The messages
-.I Conference <confno> has a bad Text-list. Starts with 0
-and
-.I Person <persno> has created <number> conferences, not <number> 
-.RI ( as
-.I said in
-.IR person-stat ).
-are normal. If you get them when you specify
-.B -g,
-let
-.B dbck
-fix them and run
-.B dbck -g
-again.
-.SH FILES
-.TP 20
-.B /usr/lyskom
-Default database directory.
-.TP
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file of
-.B ramkomd-data.
-.SH BUGS
-Does not lock the database.
-.PP
-Does never check if the database is locked.
-.PP
-Should have an unlock database option.
-.PP
-Does not check that 
-.B ramkomd-data
-and
-.B ramkomd-texts
-are consistent.
-.SH AUTHOR
-Per Cederqvist <ceder@lysator.liu.se>
diff --git a/doc/man/lyskom.5 b/doc/man/lyskom.5
deleted file mode 100644
index e507faa7f..000000000
--- a/doc/man/lyskom.5
+++ /dev/null
@@ -1,294 +0,0 @@
-.\" $Id: lyskom.5,v 1.3 1991/08/24 11:51:46 linus Exp $
-.\" $Date: 1991/08/24 11:51:46 $
-.TH ramkom 5 "August 24, 1991"
-.SH NAME
-ramkom - LysKOM 
-.I database
-format
-.SH SYNOPSIS
-.B /usr/lyskom/db/ramkomd-*
-.br
-and
-.br
-.B /usr/lyskom/etc/pid
-.PP
-.B #include <lyskom/kom-types.h>
-.SH DISCLAIMER
-The
-.I database
-is not really a database but a sequential file where all data is saved
-from the memory.
-.SH DESCRIPTION
-There are 2 files: One file with all the data
-.RB ( ramkomd-data ).
-And one with all texts 
-.RB ( ramkomd-texts ).
-The texts file does not contain any information about where any text
-starts of ends, all this is in the data file together with other infos
-on the text.
-.PP
-If the first five chars of the data file is CLEAN then the
-.I database
-is considered clean. If its anything else the
-.BR ramkomd (8)
-program will try to find the backupfile instead.
-.PP
-Then there is a number telling the number of the next free conference
-.RI ( next_free_num ).
-.PP
-Now follows a list of all conferences. One conference on each line. If
-the conference is deleted the line consists of a
-.B @
-otherwise it starts with a
-.BR + .
-.PP
-Now follows a list of all person statuses. Here is also every person
-on its own line and the deleted persons or the numbers that are not
-persons but conferences are lines containing just a
-.BR @ .
-.PP
-Both the conference status part and the person status part are exactly
-.IR next_free_num -1
-lines long.
-.PP
-Now follows the number of the next text that is not used and a list of
-text statuses.
-Every text status has its own line just like the other statuses and
-non-existent texts are represented by the 
-.BI @ .
-.PP
-The different statuses types are
-.B conference
-.BR statuses ,
-.B person statuses
-and
-.B text 
-.BR statuses .
-These are in a struct in the include file but in this file they are
-not saved as structs but every element is saved as a ascii string.
-Strings are saved as holerith strings. The field of the struct is not
-even saved in the same order as in the struct. 
-Their order in the database is followed below.
-.PP
-An array of things is represented in the database by a number telling
-how many elements there are in the array and the either a
-.B *
-in the case no elements or a 
-.B {
-followed by all the elements and a finishing
-.BR } .
-.SS Conference status
-.LP
-This contains all information for a conference. A conference is a
-object that recieves texts.
-.TP 15
-.I Name
-Name of the conference saved as a holerith string.
-.TP
-.I Member list
-An array of the members in that conference.
-.TP
-.I First local number
-This is the local number of the first text in the conference. Its
-saved here in order to save space in this file by not mentioning all
-deleted texts in the beginning of the conference.
-.TP
-.I Texts
-This is an array of recieved texts. The local number of the text is
-determined by the position in this list and the value of the
-.I first local
-.IR number .
-.TP
-.I Type
-This is the type of the conf, it contains the infomation that says if
-the conference is read protected, original flagged conference, secret,
-or if its a letter box.
-.TP
-.I Creation time
-The time the conference was created.
-.TP
-.I Last written
-The time the last text was sent to the conference.
-.TP
-.I Creator
-The number of the person that has created the conference. This is 0
-for conferences that are created initially.
-.TP
-.I Presentation
-This is the number of the text containing a presentation of the
-conference. If there is no presentation this number is 0.
-.TP
-.I Supervisor
-This is the number of the conference whose members are supervisors of
-the conference. Initially this is set to be the number of the letter
-box of the creator.
-.TP
-.I Permitted submitters
-This is the number of the conference whose members are allowed to
-submit texts to this conference. If this is 0 (the default) all
-persons i 
-.B LysKOM
-are allowed to submit.
-.TP
-.I Super conference
-This is a number of a conference that comments to articles should be
-sent to if this conference is original flagged.
-.TP
-.I Message of the day
-This is the textnumber of the text containing a notice message about
-the conference. Mostly used for letter boxes. If 0 then there is no
-such message.
-.TP
-.I Garb nice
-This is the number of days a text stays in the conference before it is
-removed by the expiration routines. Its really the expiration rate.
-.SS Person statuses
-.LP
-Person statuses contains all info about persons.
-.TP 15
-.I Password
-The password is stored as a string. The length of the string is 64 but
-the length of the password itself is stored as the first char in the
-string. Passwords longer that 63 chars are truncated.
-.TP
-.I Username
-This is the username and machine from the last time the person logged in.
-.TP
-.I Privileges
-The persons privileges are stored here. This is a bit array, length is
-16 bits. It is not really welldetemined what bit does what.
-.TP
-.I Personal flags
-The persons flags are stored here.
-.TP
-.I First local number
-This is the local number of the first created text that still exists
-in the database. Its local to this list.
-.TP
-.I Created text list
-This is an array of all created texts beginning at the first local
-number.
-.TP
-.I Marked texts
-This is an array of all marked texts and their mark type. Every
-element in the array is a text number and a mark number.
-.TP
-.I Membership
-Here is the information about which conferences the person is member
-in. Its an array where every element is of the type 
-.B Membership
-(See below).
-.TP
-.I Last login
-Time of the last login.
-.TP
-.I User area
-Number of the text being the persons user area. If there is no user
-area this is 0.
-.TP
-.I Total time present
-Time in 
-.B LysKOM
-in seconds.
-.TP
-.I Sessions
-Number of logins made for that person.
-.TP
-.I Created lines
-.TP
-.I Created bytes
-.TP
-.I Read texts
-Count of read marked texts.
-.TP
-.I No of fetches
-This is the information about how many texts this person has fetched.
-Using caching clients this number could increase well beyond
-.I Read 
-.IR texts .
-.TP
-.I Created persons
-Count of created persons.
-.TP 
-.I Created conferences
-Count of created conferences.
-.SS Text statuses
-This contains info about the texts.
-.TP 15
-.I Created time
-Time this text was created.
-.TP
-.I Author
-Person that wrote this text.
-.TP
-.I Start
-Start pointer for the text in the
-.I ramkomd-texts
-file.
-.TP
-.I Number of lines
-Length of the text in lines.
-.TP
-.I Number of chars
-Length of the text in chars.
-.TP
-.I Number of marks
-Count of existing marks on this text.
-.TP
-.I Header list
-An array containing info about 
-.IR recipients ,
-.I comments
-.IR to -pointers
-etc. Every element is a 
-.IR Misc_info .
-.SS Membership
-The membership type tells us about conferences we are member of and
-how much we have already read of it. It is saved in this way:
-.TP
-.I Last time read
-Updated when we mark a text as read in this conference.
-.TP
-.I Conference number
-The number telling what conf.
-.TP
-.I Priority
-Used by the client to determine reading order.
-.TP
-.I Last text read
-Local number of the last text we have read. This is used to keep track
-of which texts we have not yet read and calculate how many unread we
-have in this conference.
-.TP
-.I Read texts
-An array containing the texts that we have read after the 
-.I Last text 
-.IR read .
-This is necessary because its possible to read in any order.
-.SH FILES
-.TP 20
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /etc/pid
-File with the pid of the lyskom-process.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file with all data.
-.SH "SEE ALSO"
-.BR ramkomd (8),
-.BR dbck (8)
-.SH BUGS
-This is really a joke. Its not a database, not optimal in any way. But
-it works.
-.PP
-The 
-.I message of the day
-text number is not saved anywhere. This makes the
-server forget what text that is when restarting.
-.SH NOTES
-This will soon disapear and be replaced by something more bazaarly
-inexplicable.
diff --git a/doc/man/lyskomd.8 b/doc/man/lyskomd.8
deleted file mode 100644
index b768dbf82..000000000
--- a/doc/man/lyskomd.8
+++ /dev/null
@@ -1,95 +0,0 @@
-.\" $Id: lyskomd.8,v 1.3 1991/08/22 23:41:12 linus Exp $
-.\" $Date: 1991/08/22 23:41:12 $
-.TH ramkomd 8 "August 22, 1991"
-.SH NAME
-ramkomd - LysKOM server
-.SH SYNOPSIS
-.B /usr/lyskom/bin/ramkomd 
-[
-.B -d
-] [
-.B -q
-] [
-.BI -D database-directory
-] [
-.BI -p clientportnumber
-] [
-.BI -P muxportnumber
-] [
-.B -a
-]
-.SH DESCRIPTION
-This program runs a LysKOM server.
-.PP
-It listens for connections on the given portnumbers (defaults are 4894
-for the 
-.I clientportnumber
-and 4787 for the
-.IR muxportnumber ).
-.SH OPTIONS
-.TP
-.B \-d
-Adds one to the debug-level i.e. increases the amount of output on the
-stderr from the process.
-
-Using one
-.B \-d
-make the process print a
-.I >
-for every timeout, a message for every person that is connecting or
-disconnecting and a message for every succesful or unsuccessful
-communication to the process.
-.TP
-.B \-q
-Never save the database.
-.TP
-.BI \-D database-directory
-Use the database in the
-.I database-directory.
-.br
-Example: If your database is in
-.B $HOME/lyskom/db
-you should use the option
-.B \-D$HOME/lyskom
-.TP
-.BI \-p clientportnumber
-listens for clients on the port number
-.I clientportnumber.
-.TP
-.BI \-P muxportnumber
-listens for mux connections on the port number
-.I muxportnumber.
-A mux connection is a connection using a special protocoll to allow
-several sessions within one connection.
-.TP
-.B \-a
-Do not send any non-requested messages. This disables the sending of
-messages about events in the server to all connections.
-.SH FILES
-.TP 20
-.B /usr/lyskom
-Default database directory.
-.TP
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /etc/pid
-File with the pid of the lyskom-process.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file with all data.
-.SH BUGS
-Small memory leak.
-.PP
-There is no practical handling of security.
-.PP
-The choice of asynchronously issued messages is not very good.
-.PP
-The so called "data base" is a joke.
-.SH AUTHOR
-Per Cederqvist <ceder@lysator.liu.se>
-.SH NOTE
-Version 2.0 on its way.
diff --git a/doc/man/man3/isc3.x b/doc/man/man3/isc3.x
deleted file mode 100644
index aec549f6e..000000000
--- a/doc/man/man3/isc3.x
+++ /dev/null
@@ -1,186 +0,0 @@
-.\" $Copyright:	$
-.\" Copyright (c) 1991 Lysator Computer Club, Linkoping University, Sweden
-.\" All rights reserved
-...
-.V= $Header: /home/ceder/convert-lyskomd/cvsroot/lyskom-server/doc/man/man3/Attic/isc3.x,v 0.1 1991/08/12 17:39:55 ceder Exp $
-.TH ISC 3X "\*(V)" "LUNATIX"
-.SH NAME
-isc_initialize, isc_shutdown, isc_listen, isc_unlisten,
-isc_opentcp, isc_openfile, isc_openfd, isc_close,
-isc_sessions, isc_getnextevent, isc_dispose, 
-isc_flush, isc_write, isc_putc, isc_printf,
-isc_allocmsg, isc_reallocmsg, isc_freemsg, isc_mkstrmsg,
-isc_setmaxmsgsize, isc_setallocfn, isc_setlogfn, isc_setabortfn
-.SH FUNCTIONS
-.nf
-.B IscMaster *
-.B "    isc_initialize (IscConfig *cfg)"
-.PP
-.B void
-.B "    isc_shutdown(IscMaster *mcb)"
-.PP
-.B int
-.B "    isc_listen(IscMaster *mcb, int port);"
-.PP
-.B void
-.B "    isc_unlisten(IscMaster *mcb, int port);"
-.PP
-.B "IscSession *"
-.B "    isc_opentcp(IscMaster *mcb, const char *host, int port)"
-.PP
-.B "IscSession *"
-.B "    isc_openfile(IscMaster *mcb, const char *path, int mode)"
-.PP
-.B "IscSession *"
-.B "    isc_openfd(IscMaster *mcb, int fd)"
-.PP
-.B "void"
-.B "    isc_close (IscSession *scb)"
-.PP
-.B "int"
-.B "    isc_sessions (IscMaster *mcb)"
-.PP
-.B "IscEvent *"
-.B "    isc_getnextevent (IscMaster *mcb, long timeout)"
-.PP
-.B "void"
-.B "    isc_dispose (IscEvent *ecb)"
-.PP
-.B "void"
-.B "    isc_flush (IscSession *scb)"
-.PP
-.B "int"
-.B "    isc_write (IscSession *scb, const void *buf, size_t len)"
-.PP
-.B "int"
-.B "    isc_printf (IscSession *scb, const char *format, ...)"
-.PP
-.B "int"
-.B "    isc_putc (int chr, IscSession *scb)"
-.PP
-.B "IscMessage *"
-.B "    isc_allocmsg(size_t size);"
-.PP
-.B "IscMessage *"
-.B "    isc_reallocmsg(IscMessage *msg, size_t size);"
-.PP
-.B "void"
-.B "    isc_freemsg(IscMessage *msg);"
-.PP
-.B "IscMessage *"
-.B "    isc_mkstrmsg(const char *str);"
-.PP
-.B "void"
-.B "    isc_setmaxmsgsize (IscMaster *mcb, size_t size)"
-.PP
-.B "void"
-.B "    isc_setlogfn (void (*logfnp)(const char *fmt, va_list AP))"
-.PP
-.B "void"
-.B "    isc_setallocfn (void * (*mallocfn)(size_t size),"
-.B "                    void * (*reallocfn)(void *buf, size_t size),"
-.B "                    void   (*freefn)(void *buf))"
-.PP
-.B "void"
-.B "    isc_setabortfn (void (*abortfn)(const char *msg))"
-.SH TYPES
-.nf
-.B typedef void IscConfig;
-.PP
-.B typedef enum 
-.B {
-.B "    ISC_EVENT_ERROR,"
-.B "    ISC_EVENT_TIMEOUT,"
-.B "    ISC_EVENT_LOGIN,"
-.B "    ISC_EVENT_LOGOUT,"
-.B "    ISC_EVENT_MESSAGE,"
-.B "} IscEventType;"
-.PP
-.B typedef enum
-.B {
-.B "  ISC_TYPE_UNKNOWN,"
-.B "  ISC_TYPE_TCP,"
-.B "  ISC_TYPE_FILE"
-.B "} IscSessionType;"
-.PP
-.B typedef struct isc_msg
-.B {
-.B "  int size;"
-.B "  int length;"
-.B "  char *buffer;"
-.B } IscMessage;
-.PP
-.B typedef struct isc_mcb
-.B {
-.B "  int port;"
-.B "  int fd;"
-.B "  int maxmsgsize;"
-.B "  int maxqueuedsize;"
-.B "  int maxdequeuelen;"
-.B "  struct isc_scb *sessions;"
-.B } IscMaster;
-.PP
-.B typedef struct isc_scb
-.B {
-.B "    struct isc_scb  * prev;"
-.B "    struct isc_scb  * next;"
-.B "    IscMaster       * mcb;"
-.B "    IscSessionType    type;"
-.B "    int               fd;
-.B "    IscMsgQueue     * rd_msg_q;"
-.B "    IscMsgQueue     * wr_msg_q;"
-.B "    char              sendbuf[2048];"
-.B "    int               sendindex;"
-.B "    union"
-.B "    {"
-.B "      struct"
-.B "      {"
-.B "        char  * hostname;"
-.B "        int     rport;"
-.B "        int     lport;"
-.B "      } tcp;"
-.B "      struct"
-.B "      {"
-.B "	    char * pathname;"
-.B "	    int    openmode;"
-.B "      } file;"
-.B "    } info;"
-.B "    int               kill_him;"
-.B "    time_t            logintime;"
-.B "    struct"
-.B "    {"
-.B "      struct"
-.B "      {"
-.B "        long bytes;"
-.B "        long packets;"
-.B "      } rx, tx;"
-.B "    } stats;"
-.B ""
-.B "    ISC_UDGTYPE  * udg;   /* Reserved for user defined usage */"
-.B "} IscSession;"
-.PP
-.B typedef struct isc_ecb
-.B {
-.B "  IscEventType    event;"
-.B "  IscSession    * session;"
-.B "  IscMessage    * msg;"
-.B } IscEvent;
-.SH DESCRIPTION
-These functions implement an interface to the TCP/IP streams facitiliy.
-The functions are obtained with the loader option
-.BR \-lisc .
-(More to come here...)
-.PP
-.SH DIAGNOSTICS
-(And here... :\-)
-.PP
-.SH BUGS
-Hehe... I'm sure they exists...
-.SH GUILTY
-Peter Eriksson <pen@lysator.liu.se> &
-Per Cederqvist <ceder@lysator.liu.se>
-
-
-ISC is Copyright (c) 1991 Lysator Computer Club, Linkoping University, Sweden,
-in cooperation with the International Syndicate of Computation.
-All rights reserved.
diff --git a/doc/man/man5/lyskom.5 b/doc/man/man5/lyskom.5
deleted file mode 100644
index e507faa7f..000000000
--- a/doc/man/man5/lyskom.5
+++ /dev/null
@@ -1,294 +0,0 @@
-.\" $Id: lyskom.5,v 1.3 1991/08/24 11:51:46 linus Exp $
-.\" $Date: 1991/08/24 11:51:46 $
-.TH ramkom 5 "August 24, 1991"
-.SH NAME
-ramkom - LysKOM 
-.I database
-format
-.SH SYNOPSIS
-.B /usr/lyskom/db/ramkomd-*
-.br
-and
-.br
-.B /usr/lyskom/etc/pid
-.PP
-.B #include <lyskom/kom-types.h>
-.SH DISCLAIMER
-The
-.I database
-is not really a database but a sequential file where all data is saved
-from the memory.
-.SH DESCRIPTION
-There are 2 files: One file with all the data
-.RB ( ramkomd-data ).
-And one with all texts 
-.RB ( ramkomd-texts ).
-The texts file does not contain any information about where any text
-starts of ends, all this is in the data file together with other infos
-on the text.
-.PP
-If the first five chars of the data file is CLEAN then the
-.I database
-is considered clean. If its anything else the
-.BR ramkomd (8)
-program will try to find the backupfile instead.
-.PP
-Then there is a number telling the number of the next free conference
-.RI ( next_free_num ).
-.PP
-Now follows a list of all conferences. One conference on each line. If
-the conference is deleted the line consists of a
-.B @
-otherwise it starts with a
-.BR + .
-.PP
-Now follows a list of all person statuses. Here is also every person
-on its own line and the deleted persons or the numbers that are not
-persons but conferences are lines containing just a
-.BR @ .
-.PP
-Both the conference status part and the person status part are exactly
-.IR next_free_num -1
-lines long.
-.PP
-Now follows the number of the next text that is not used and a list of
-text statuses.
-Every text status has its own line just like the other statuses and
-non-existent texts are represented by the 
-.BI @ .
-.PP
-The different statuses types are
-.B conference
-.BR statuses ,
-.B person statuses
-and
-.B text 
-.BR statuses .
-These are in a struct in the include file but in this file they are
-not saved as structs but every element is saved as a ascii string.
-Strings are saved as holerith strings. The field of the struct is not
-even saved in the same order as in the struct. 
-Their order in the database is followed below.
-.PP
-An array of things is represented in the database by a number telling
-how many elements there are in the array and the either a
-.B *
-in the case no elements or a 
-.B {
-followed by all the elements and a finishing
-.BR } .
-.SS Conference status
-.LP
-This contains all information for a conference. A conference is a
-object that recieves texts.
-.TP 15
-.I Name
-Name of the conference saved as a holerith string.
-.TP
-.I Member list
-An array of the members in that conference.
-.TP
-.I First local number
-This is the local number of the first text in the conference. Its
-saved here in order to save space in this file by not mentioning all
-deleted texts in the beginning of the conference.
-.TP
-.I Texts
-This is an array of recieved texts. The local number of the text is
-determined by the position in this list and the value of the
-.I first local
-.IR number .
-.TP
-.I Type
-This is the type of the conf, it contains the infomation that says if
-the conference is read protected, original flagged conference, secret,
-or if its a letter box.
-.TP
-.I Creation time
-The time the conference was created.
-.TP
-.I Last written
-The time the last text was sent to the conference.
-.TP
-.I Creator
-The number of the person that has created the conference. This is 0
-for conferences that are created initially.
-.TP
-.I Presentation
-This is the number of the text containing a presentation of the
-conference. If there is no presentation this number is 0.
-.TP
-.I Supervisor
-This is the number of the conference whose members are supervisors of
-the conference. Initially this is set to be the number of the letter
-box of the creator.
-.TP
-.I Permitted submitters
-This is the number of the conference whose members are allowed to
-submit texts to this conference. If this is 0 (the default) all
-persons i 
-.B LysKOM
-are allowed to submit.
-.TP
-.I Super conference
-This is a number of a conference that comments to articles should be
-sent to if this conference is original flagged.
-.TP
-.I Message of the day
-This is the textnumber of the text containing a notice message about
-the conference. Mostly used for letter boxes. If 0 then there is no
-such message.
-.TP
-.I Garb nice
-This is the number of days a text stays in the conference before it is
-removed by the expiration routines. Its really the expiration rate.
-.SS Person statuses
-.LP
-Person statuses contains all info about persons.
-.TP 15
-.I Password
-The password is stored as a string. The length of the string is 64 but
-the length of the password itself is stored as the first char in the
-string. Passwords longer that 63 chars are truncated.
-.TP
-.I Username
-This is the username and machine from the last time the person logged in.
-.TP
-.I Privileges
-The persons privileges are stored here. This is a bit array, length is
-16 bits. It is not really welldetemined what bit does what.
-.TP
-.I Personal flags
-The persons flags are stored here.
-.TP
-.I First local number
-This is the local number of the first created text that still exists
-in the database. Its local to this list.
-.TP
-.I Created text list
-This is an array of all created texts beginning at the first local
-number.
-.TP
-.I Marked texts
-This is an array of all marked texts and their mark type. Every
-element in the array is a text number and a mark number.
-.TP
-.I Membership
-Here is the information about which conferences the person is member
-in. Its an array where every element is of the type 
-.B Membership
-(See below).
-.TP
-.I Last login
-Time of the last login.
-.TP
-.I User area
-Number of the text being the persons user area. If there is no user
-area this is 0.
-.TP
-.I Total time present
-Time in 
-.B LysKOM
-in seconds.
-.TP
-.I Sessions
-Number of logins made for that person.
-.TP
-.I Created lines
-.TP
-.I Created bytes
-.TP
-.I Read texts
-Count of read marked texts.
-.TP
-.I No of fetches
-This is the information about how many texts this person has fetched.
-Using caching clients this number could increase well beyond
-.I Read 
-.IR texts .
-.TP
-.I Created persons
-Count of created persons.
-.TP 
-.I Created conferences
-Count of created conferences.
-.SS Text statuses
-This contains info about the texts.
-.TP 15
-.I Created time
-Time this text was created.
-.TP
-.I Author
-Person that wrote this text.
-.TP
-.I Start
-Start pointer for the text in the
-.I ramkomd-texts
-file.
-.TP
-.I Number of lines
-Length of the text in lines.
-.TP
-.I Number of chars
-Length of the text in chars.
-.TP
-.I Number of marks
-Count of existing marks on this text.
-.TP
-.I Header list
-An array containing info about 
-.IR recipients ,
-.I comments
-.IR to -pointers
-etc. Every element is a 
-.IR Misc_info .
-.SS Membership
-The membership type tells us about conferences we are member of and
-how much we have already read of it. It is saved in this way:
-.TP
-.I Last time read
-Updated when we mark a text as read in this conference.
-.TP
-.I Conference number
-The number telling what conf.
-.TP
-.I Priority
-Used by the client to determine reading order.
-.TP
-.I Last text read
-Local number of the last text we have read. This is used to keep track
-of which texts we have not yet read and calculate how many unread we
-have in this conference.
-.TP
-.I Read texts
-An array containing the texts that we have read after the 
-.I Last text 
-.IR read .
-This is necessary because its possible to read in any order.
-.SH FILES
-.TP 20
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /etc/pid
-File with the pid of the lyskom-process.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file with all data.
-.SH "SEE ALSO"
-.BR ramkomd (8),
-.BR dbck (8)
-.SH BUGS
-This is really a joke. Its not a database, not optimal in any way. But
-it works.
-.PP
-The 
-.I message of the day
-text number is not saved anywhere. This makes the
-server forget what text that is when restarting.
-.SH NOTES
-This will soon disapear and be replaced by something more bazaarly
-inexplicable.
diff --git a/doc/man/man5/ramkom.5 b/doc/man/man5/ramkom.5
deleted file mode 100644
index 566375697..000000000
--- a/doc/man/man5/ramkom.5
+++ /dev/null
@@ -1,294 +0,0 @@
-.\" $Id: ramkom.5,v 1.3 1991/08/24 11:51:46 linus Exp $
-.\" $Date: 1991/08/24 11:51:46 $
-.TH ramkom 5 "August 24, 1991"
-.SH NAME
-ramkom - LysKOM 
-.I database
-format
-.SH SYNOPSIS
-.B /usr/lyskom/db/ramkomd-*
-.br
-and
-.br
-.B /usr/lyskom/etc/pid
-.PP
-.B #include <lyskom/kom-types.h>
-.SH DISCLAIMER
-The
-.I database
-is not really a database but a sequential file where all data is saved
-from the memory.
-.SH DESCRIPTION
-There are 2 files: One file with all the data
-.RB ( ramkomd-data ).
-And one with all texts 
-.RB ( ramkomd-texts ).
-The texts file does not contain any information about where any text
-starts of ends, all this is in the data file together with other infos
-on the text.
-.PP
-If the first five chars of the data file is CLEAN then the
-.I database
-is considered clean. If its anything else the
-.BR ramkomd (8)
-program will try to find the backupfile instead.
-.PP
-Then there is a number telling the number of the next free conference
-.RI ( next_free_num ).
-.PP
-Now follows a list of all conferences. One conference on each line. If
-the conference is deleted the line consists of a
-.B @
-otherwise it starts with a
-.BR + .
-.PP
-Now follows a list of all person statuses. Here is also every person
-on its own line and the deleted persons or the numbers that are not
-persons but conferences are lines containing just a
-.BR @ .
-.PP
-Both the conference status part and the person status part are exactly
-.IR next_free_num -1
-lines long.
-.PP
-Now follows the number of the next text that is not used and a list of
-text statuses.
-Every text status has its own line just like the other statuses and
-non-existent texts are represented by the 
-.BI @ .
-.PP
-The different statuses types are
-.B conference
-.BR statuses ,
-.B person statuses
-and
-.B text 
-.BR statuses .
-These are in a struct in the include file but in this file they are
-not saved as structs but every element is saved as a ascii string.
-Strings are saved as holerith strings. The field of the struct is not
-even saved in the same order as in the struct. 
-Their order in the database is followed below.
-.PP
-An array of things is represented in the database by a number telling
-how many elements there are in the array and the either a
-.B *
-in the case no elements or a 
-.B {
-followed by all the elements and a finishing
-.BR } .
-.SS Conference status
-.LP
-This contains all information for a conference. A conference is a
-object that recieves texts.
-.TP 15
-.I Name
-Name of the conference saved as a holerith string.
-.TP
-.I Member list
-An array of the members in that conference.
-.TP
-.I First local number
-This is the local number of the first text in the conference. Its
-saved here in order to save space in this file by not mentioning all
-deleted texts in the beginning of the conference.
-.TP
-.I Texts
-This is an array of recieved texts. The local number of the text is
-determined by the position in this list and the value of the
-.I first local
-.IR number .
-.TP
-.I Type
-This is the type of the conf, it contains the infomation that says if
-the conference is read protected, original flagged conference, secret,
-or if its a letter box.
-.TP
-.I Creation time
-The time the conference was created.
-.TP
-.I Last written
-The time the last text was sent to the conference.
-.TP
-.I Creator
-The number of the person that has created the conference. This is 0
-for conferences that are created initially.
-.TP
-.I Presentation
-This is the number of the text containing a presentation of the
-conference. If there is no presentation this number is 0.
-.TP
-.I Supervisor
-This is the number of the conference whose members are supervisors of
-the conference. Initially this is set to be the number of the letter
-box of the creator.
-.TP
-.I Permitted submitters
-This is the number of the conference whose members are allowed to
-submit texts to this conference. If this is 0 (the default) all
-persons i 
-.B LysKOM
-are allowed to submit.
-.TP
-.I Super conference
-This is a number of a conference that comments to articles should be
-sent to if this conference is original flagged.
-.TP
-.I Message of the day
-This is the textnumber of the text containing a notice message about
-the conference. Mostly used for letter boxes. If 0 then there is no
-such message.
-.TP
-.I Garb nice
-This is the number of days a text stays in the conference before it is
-removed by the expiration routines. Its really the expiration rate.
-.SS Person statuses
-.LP
-Person statuses contains all info about persons.
-.TP 15
-.I Password
-The password is stored as a string. The length of the string is 64 but
-the length of the password itself is stored as the first char in the
-string. Passwords longer that 63 chars are truncated.
-.TP
-.I Username
-This is the username and machine from the last time the person logged in.
-.TP
-.I Privileges
-The persons privileges are stored here. This is a bit array, length is
-16 bits. It is not really welldetemined what bit does what.
-.TP
-.I Personal flags
-The persons flags are stored here.
-.TP
-.I First local number
-This is the local number of the first created text that still exists
-in the database. Its local to this list.
-.TP
-.I Created text list
-This is an array of all created texts beginning at the first local
-number.
-.TP
-.I Marked texts
-This is an array of all marked texts and their mark type. Every
-element in the array is a text number and a mark number.
-.TP
-.I Membership
-Here is the information about which conferences the person is member
-in. Its an array where every element is of the type 
-.B Membership
-(See below).
-.TP
-.I Last login
-Time of the last login.
-.TP
-.I User area
-Number of the text being the persons user area. If there is no user
-area this is 0.
-.TP
-.I Total time present
-Time in 
-.B LysKOM
-in seconds.
-.TP
-.I Sessions
-Number of logins made for that person.
-.TP
-.I Created lines
-.TP
-.I Created bytes
-.TP
-.I Read texts
-Count of read marked texts.
-.TP
-.I No of fetches
-This is the information about how many texts this person has fetched.
-Using caching clients this number could increase well beyond
-.I Read 
-.IR texts .
-.TP
-.I Created persons
-Count of created persons.
-.TP 
-.I Created conferences
-Count of created conferences.
-.SS Text statuses
-This contains info about the texts.
-.TP 15
-.I Created time
-Time this text was created.
-.TP
-.I Author
-Person that wrote this text.
-.TP
-.I Start
-Start pointer for the text in the
-.I ramkomd-texts
-file.
-.TP
-.I Number of lines
-Length of the text in lines.
-.TP
-.I Number of chars
-Length of the text in chars.
-.TP
-.I Number of marks
-Count of existing marks on this text.
-.TP
-.I Header list
-An array containing info about 
-.IR recipients ,
-.I comments
-.IR to -pointers
-etc. Every element is a 
-.IR Misc_info .
-.SS Membership
-The membership type tells us about conferences we are member of and
-how much we have already read of it. It is saved in this way:
-.TP
-.I Last time read
-Updated when we mark a text as read in this conference.
-.TP
-.I Conference number
-The number telling what conf.
-.TP
-.I Priority
-Used by the client to determine reading order.
-.TP
-.I Last text read
-Local number of the last text we have read. This is used to keep track
-of which texts we have not yet read and calculate how many unread we
-have in this conference.
-.TP
-.I Read texts
-An array containing the texts that we have read after the 
-.I Last text 
-.IR read .
-This is necessary because its possible to read in any order.
-.SH FILES
-.TP 20
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /etc/pid
-File with the pid of the lyskom-process.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file with all data.
-.SH "SEE ALSO"
-.BR ramkomd (8),
-.BR dbck (8)
-.SH BUGS
-This is really a joke. Its not a database, not optimal in any way. But
-it works.
-.PP
-The 
-.I message of the day
-text number is not saved anywhere. This makes the
-server forget what text that is when restarting.
-.SH NOTES
-This will soon disapear and be replaced by something more bazaarly
-inexplicable.
diff --git a/doc/man/man8/dbck.8 b/doc/man/man8/dbck.8
deleted file mode 100644
index 66f32624a..000000000
--- a/doc/man/man8/dbck.8
+++ /dev/null
@@ -1,105 +0,0 @@
-.\" $Id: dbck.8,v 1.5 1991/08/22 23:57:52 linus Exp $
-.\" $Date: 1991/08/22 23:57:52 $
-.TH dbck 8 "August 22, 1991"
-.SH NAME
-dbck - reports and corrects errors in the LysKOM database. This
-program is also used remove unreferenced texts from the texts file.
-.SH SYNOPSIS
-.B /usr/lyskom/bin/dbck 
-[
-.B -D
-.I database-directory
-] [
-.B -irvg
-]
-.SH DESCRIPTION
-This program should be run after something has happened that has made the
-database corrupted.
-.PP
-It fixes the database, checking all references.
-.PP
-With argument
-.B -g
-the file with texts are rewritten without all unreferenced texts and
-all pointers are adjusted. This does only happen if the database was
-correct.
-.PP
-If none of the options
-.B -r, -i
-or
-.B -g
-are given the database is not changed.
-.SH OPTIONS
-.TP
-.BI \-D " database-directory"
-Use the database in the
-.I database-directory
-as the target of the checkup.
-.br
-Example: If your database is in
-.ft B
-$HOME/lyskom/db
-.ft R
-you should use the command
-.ft B
-.br
-/usr/lyskom/bin/dbck -D $HOME/lyskom
-.ft R
-.TP
-.B \-i
-Run interactively asking the user questions.
-.TP
-.B \-r
-Repair simple errors without asking.
-.TP
-.B \-v
-Verbose mode. Report not only errors but other statuses of the
-database.
-.TP
-.B \-g
-Do the garbage collect of the texts part of the database. This is
-sometimes called a compression of the text but it only removes
-non-referenced texts.
-.SH NOTES
-The messages
-.I Conference <confno> has a bad Text-list. Starts with 0
-and
-.I Person <persno> has created <number> conferences, not <number> 
-.RI ( as
-.I said in
-.IR person-stat ).
-are normal. If you get them when you specify
-.B -g,
-let
-.B dbck
-fix them and run
-.B dbck -g
-again.
-.SH FILES
-.TP 20
-.B /usr/lyskom
-Default database directory.
-.TP
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file of
-.B ramkomd-data.
-.SH BUGS
-Does not lock the database.
-.PP
-Does never check if the database is locked.
-.PP
-Should have an unlock database option.
-.PP
-Does not check that 
-.B ramkomd-data
-and
-.B ramkomd-texts
-are consistent.
-.SH AUTHOR
-Per Cederqvist <ceder@lysator.liu.se>
diff --git a/doc/man/man8/lyskomd.8 b/doc/man/man8/lyskomd.8
deleted file mode 100644
index b768dbf82..000000000
--- a/doc/man/man8/lyskomd.8
+++ /dev/null
@@ -1,95 +0,0 @@
-.\" $Id: lyskomd.8,v 1.3 1991/08/22 23:41:12 linus Exp $
-.\" $Date: 1991/08/22 23:41:12 $
-.TH ramkomd 8 "August 22, 1991"
-.SH NAME
-ramkomd - LysKOM server
-.SH SYNOPSIS
-.B /usr/lyskom/bin/ramkomd 
-[
-.B -d
-] [
-.B -q
-] [
-.BI -D database-directory
-] [
-.BI -p clientportnumber
-] [
-.BI -P muxportnumber
-] [
-.B -a
-]
-.SH DESCRIPTION
-This program runs a LysKOM server.
-.PP
-It listens for connections on the given portnumbers (defaults are 4894
-for the 
-.I clientportnumber
-and 4787 for the
-.IR muxportnumber ).
-.SH OPTIONS
-.TP
-.B \-d
-Adds one to the debug-level i.e. increases the amount of output on the
-stderr from the process.
-
-Using one
-.B \-d
-make the process print a
-.I >
-for every timeout, a message for every person that is connecting or
-disconnecting and a message for every succesful or unsuccessful
-communication to the process.
-.TP
-.B \-q
-Never save the database.
-.TP
-.BI \-D database-directory
-Use the database in the
-.I database-directory.
-.br
-Example: If your database is in
-.B $HOME/lyskom/db
-you should use the option
-.B \-D$HOME/lyskom
-.TP
-.BI \-p clientportnumber
-listens for clients on the port number
-.I clientportnumber.
-.TP
-.BI \-P muxportnumber
-listens for mux connections on the port number
-.I muxportnumber.
-A mux connection is a connection using a special protocoll to allow
-several sessions within one connection.
-.TP
-.B \-a
-Do not send any non-requested messages. This disables the sending of
-messages about events in the server to all connections.
-.SH FILES
-.TP 20
-.B /usr/lyskom
-Default database directory.
-.TP
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /etc/pid
-File with the pid of the lyskom-process.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file with all data.
-.SH BUGS
-Small memory leak.
-.PP
-There is no practical handling of security.
-.PP
-The choice of asynchronously issued messages is not very good.
-.PP
-The so called "data base" is a joke.
-.SH AUTHOR
-Per Cederqvist <ceder@lysator.liu.se>
-.SH NOTE
-Version 2.0 on its way.
diff --git a/doc/man/man8/ramkomd.8 b/doc/man/man8/ramkomd.8
deleted file mode 100644
index 35143d519..000000000
--- a/doc/man/man8/ramkomd.8
+++ /dev/null
@@ -1,95 +0,0 @@
-.\" $Id: ramkomd.8,v 1.3 1991/08/22 23:41:12 linus Exp $
-.\" $Date: 1991/08/22 23:41:12 $
-.TH ramkomd 8 "August 22, 1991"
-.SH NAME
-ramkomd - LysKOM server
-.SH SYNOPSIS
-.B /usr/lyskom/bin/ramkomd 
-[
-.B -d
-] [
-.B -q
-] [
-.BI -D database-directory
-] [
-.BI -p clientportnumber
-] [
-.BI -P muxportnumber
-] [
-.B -a
-]
-.SH DESCRIPTION
-This program runs a LysKOM server.
-.PP
-It listens for connections on the given portnumbers (defaults are 4894
-for the 
-.I clientportnumber
-and 4787 for the
-.IR muxportnumber ).
-.SH OPTIONS
-.TP
-.B \-d
-Adds one to the debug-level i.e. increases the amount of output on the
-stderr from the process.
-
-Using one
-.B \-d
-make the process print a
-.I >
-for every timeout, a message for every person that is connecting or
-disconnecting and a message for every succesful or unsuccessful
-communication to the process.
-.TP
-.B \-q
-Never save the database.
-.TP
-.BI \-D database-directory
-Use the database in the
-.I database-directory.
-.br
-Example: If your database is in
-.B $HOME/lyskom/db
-you should use the option
-.B \-D$HOME/lyskom
-.TP
-.BI \-p clientportnumber
-listens for clients on the port number
-.I clientportnumber.
-.TP
-.BI \-P muxportnumber
-listens for mux connections on the port number
-.I muxportnumber.
-A mux connection is a connection using a special protocoll to allow
-several sessions within one connection.
-.TP
-.B \-a
-Do not send any non-requested messages. This disables the sending of
-messages about events in the server to all connections.
-.SH FILES
-.TP 20
-.B /usr/lyskom
-Default database directory.
-.TP
-.IB database-directory /db/ramkomd-data
-File with all the elements and pointers.
-.TP
-.IB database-directory /db/ramkomd-texts
-File with the texts.
-.TP
-.IB database-directory /etc/pid
-File with the pid of the lyskom-process.
-.TP
-.IB database-directory /db/ramkomd-backup
-Backup file with all data.
-.SH BUGS
-Small memory leak.
-.PP
-There is no practical handling of security.
-.PP
-The choice of asynchronously issued messages is not very good.
-.PP
-The so called "data base" is a joke.
-.SH AUTHOR
-Per Cederqvist <ceder@lysator.liu.se>
-.SH NOTE
-Version 2.0 on its way.
diff --git a/doc/man/man8/updateLysKOM.8 b/doc/man/man8/updateLysKOM.8
deleted file mode 100644
index 95092bcbf..000000000
--- a/doc/man/man8/updateLysKOM.8
+++ /dev/null
@@ -1,13 +0,0 @@
-.\" $Id: updateLysKOM.8,v 1.1 1991/08/22 19:03:12 linus Exp $
-.\" $Date: 1991/08/22 19:03:12 $
-.TH updateLysKOM 8 "August 22, 1991"
-.SH NAME
-updateLysKOM - tells the server to save the internal statistics
-.SH SYNOPSIS
-.B /usr/lyskom/bin/updateLysKOM
-.SH DESCRIPTION
-This program sends a USR1 signal to the LysKOM server. If the sending
-of a signal fails it restarts the server.
-.SH INSTALLATION
-Make sure the source file contains the correct file to start, find the
-pid in and the correct logfiles.
diff --git a/doc/man/updateLysKOM.8 b/doc/man/updateLysKOM.8
deleted file mode 100644
index 95092bcbf..000000000
--- a/doc/man/updateLysKOM.8
+++ /dev/null
@@ -1,13 +0,0 @@
-.\" $Id: updateLysKOM.8,v 1.1 1991/08/22 19:03:12 linus Exp $
-.\" $Date: 1991/08/22 19:03:12 $
-.TH updateLysKOM 8 "August 22, 1991"
-.SH NAME
-updateLysKOM - tells the server to save the internal statistics
-.SH SYNOPSIS
-.B /usr/lyskom/bin/updateLysKOM
-.SH DESCRIPTION
-This program sends a USR1 signal to the LysKOM server. If the sending
-of a signal fails it restarts the server.
-.SH INSTALLATION
-Make sure the source file contains the correct file to start, find the
-pid in and the correct logfiles.
diff --git a/doc/misc_items b/doc/misc_items
deleted file mode 100644
index 9bfdc5bd5..000000000
--- a/doc/misc_items
+++ /dev/null
@@ -1,43 +0,0 @@
-File created by ceder.
-
-Medlemmarna i enumen Info_type {r av tv} olika typer.
-
-1) recpt, cc_recpt, comm_to, comm_in, footn_to, footn_in
-
-	Dessa sex {r de grundl{ggande typerna.
-
-2) loc_no, rec_time, sent_by, sent_at
-
-	Dessa inneh}ller extra information om en viss Info_type ur grupp 1.
-	Servern sk|ter sj{lv om att de skapas och tas bort p} r{tt s{tt.
-
-Nedanst}ende tabell visar exakt hur de olika Misc_items kan finnas.
-
-Mottagare:
-	recpt		Obligatorisk
-	loc_no		Obligatorisk
-	rec_time	Fylls i n{r mottagaren l{ser brevet.
-	sent_by		Om s{nt i efterhand av n}gon annan {n f|rfattaren.
-	sent_at		Om s{nt i efterhand.
-
-CC_Mottagare: (f}r ej kommentarer till detta inl{gg)
-	cc_recpt	Obligatorisk
-	loc_no		Obligatorisk
-	rec_time	Fylls i n{r mottagaren l{ser brevet.
-	sent_by		Om s{nt i efterhand av n}gon annan {n f|rfattaren.
-	sent_at		Om s{nt i efterhand.
-
-Kommentar till:
-	comm_to		Obligatorisk
-	sent_by		Om s{nt i efterhand av n}gon annan {n f|rfattaren.
-	sent_at		Om s{nt i efterhand.
-
-Fotnot till:
-	foot_to		Obligatorisk
-	sent_at		Om s{nt i efterhand.
-
-Kommenteras i:
-	comm_in		Obligatorisk
-
-Fotnot i:
-	foot_in		Obligatorisk
\ No newline at end of file
diff --git a/doc/mux.proto b/doc/mux.proto
deleted file mode 100644
index 49e204a33..000000000
--- a/doc/mux.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-Detta {r dokumentation av det simpla MUX-protokoll som implementerades
-15-16 mars 1991.
-
-MUX -> Server
-
-0      			Ping (servern svarar "Pong")
-1 <id>			Klient <id> kopplar upp sig.
-2 <id>			Klient <id> kopplar ner.
-3 <id> <msg>		Klient <id> skickar str{ngen <msg>
-
-Server -> MUX
-
-0	  		Pong (svar p} "Ping")
-2 <id>			Logga ut klient <id>.
-3 <id> <msg>		Servern skickar str{ngen <msg> till klient <id>.
-4			Error. (Protokollfel. Ska aldrig intr{ffa).
-5			Shutdown. Servern tycker att MUX:en ska d|.
-
-
-<id> {r ett heltal som v{ljs av MUX:en. Tv} olika uppkopplingar f}r
-inte ha samma <id>. <id> kan }teranv{ndas.
-
-<msg> {r en Hollerithstr{ng.
-
-
-Local Variables:
-mode:indented-swedish
-eval:(auto-fill-mode 1)
-End:
diff --git a/doc/prot-A.bnf b/doc/prot-A.bnf
deleted file mode 100644
index 7f025bca7..000000000
--- a/doc/prot-A.bnf
+++ /dev/null
@@ -1,1067 +0,0 @@
-				   
-			   LysKOM-Projektet
-		   --------------------------------
-	Specifikation av protokoll A mellan klient och server
-		   --------------------------------
-			   av Lars Aronsson
-		      <Aronsson@Lysator.LiU.SE>
-			     25 juni 1991
-
-
-
-				LysKOM
-
-LysKOM {r ett datakonferenssystem. Andra liknande system {r QZ-KOM och
-PortaCOM. LysKOM {r Copyright (C) 1990 datorf|reningen Lysator vid
-Universitetet och Tekniska H|gskolan i Link|ping. Var och en till}ts
-fritt kopiera, {ndra och distribuera LysKOM dokument och program,
-givet att mottagarna ges samma r{ttigheter. Varken Lysator eller dess
-medlemmar tar n}got som helst ansvar f|r dokumentens eller programmens
-riktighet eller f|ljderna av deras anv{ndande.
-
-
-			    Den h{r texten
-
-Den h{r texten specificerar version A av det protokoll som anv{nds
-mellan en klient (anv{ndarens program) och en server (databasen). Den
-h{r texten {r t{nkt att inneh}lla allt du beh|ver veta f|r att skriva
-en klient utan att veta n}got om servern, eller tv{rtom.
-
-Mitt syfte {r att den h{r texten skall vara s} fullst{ndig och korrekt
-som m|jligt. Om du hittar n}gra fel, eller kommer p} n}got som saknas,
-s} h|r g{rna av dig till mig. F|ljande {r de saker som jag vet saknas
-i den h{r texten:
-
-	Vad som lagras i en anv{ndares "user-area", och hur.
-
-
-				Filer
-
-Den h{r filen {r en mer systematisk sammanst{llning av nedan
-uppr{knade filer.  Det {r m|jligt att filerna har {ndrat namn, antal
-och utseende n{r du l{ser detta. S} h{r hette de den 3 juni 1991:
-
-	2kom/doc/com-spec		-- borta!
-	2kom/doc/security-levels.txt
-	2kom/include/kom-types.h
-	2kom/include/kom-errno.h
-	2kom/isc-client/com.h
-	2kom/server/fncdef.txt		-- borta?
-	2kom/include/services.h
-
-
-		       Underliggande protokoll
-
-LysKOM Protokoll A kan k|ras ovanp} vilken tillf|rlitlig dubbelriktad
-8-bitars bytekanal som helst. I n|dfall kan det ocks} k|ras p} en
-7-bitars bytekanal. Idag k|rs det ovanp} Telnet/TCP/IP. P} Lysator
-anv{nds telnetport 4894 p} IP-host 130.236.254.12 (laila).  Data i
-protokoll A sker i ASCII klartext. I hollerithstr{ngar (se nedan) f}r
-godtyckliga 8-bitars bytes f|rekomma, men tanken {r att man skall
-kunna k|ra protokollet "r}tt" fr}n en textterminal.
-
-
-		       Abstrakt syntaxnotation
-
-I den h{r specifikationen har en BNF-liknande grammatik anv{nts f|r
-att beskriva protokollets dataelement. Det {r mycket vetenskapligt,
-f|r s} g|r de som specar OSI-protokoll. Den h{r grammatiken borde
-likna ASN.1 mer {n den g|r, men jag har inte ASN.1-specen h{r.
-Dataf{lt har givits namn med liten begynnelsebokstav, datatyper med
-stor. Operatorn "::=" definierar (som i BNF) och ":" ger typ (som i
-Pascal). Kommentarer inleds med "!" och avslutas med radslut (som i
-BLISS). Semikolon anv{nds som i C. De grundl{ggande typerna och deras
-notation beskrivs h{rn{st.
-
-
-		       Grundl{ggande datatyper
-
-Dataelementen som skickas med protokollet }tskiljs av (godtyckliga
-sekvenser av) mellanslag, tab-tecken, line-feed, return, eller NULL.
-Undvik att skicka NULL, men var beredd p} att tolka det som ett
-mellanslag.
-
-INTEGER {r icke-negativa heltal som skall rymmas p} 32 bitar. De
-skickas som text p} decimal form.
-
-HOLLERITH {r textstr{ngar. F|rst skickas str{ngens l{ngd som en
-INTEGER, sedan bokstaven "H" och d{refter (utan }tskiljande
-mellanslag!) texten. Texten f}r inneh}lla vilka byte-v{rden som helst
-fr}n 0 till 255.
-
-BITSTRING skickas som text representerande ett heltal p} bin{r form.
-Antal bitar i str{ngen framg}r alltid av sammanhanget. [ven inledande
-nollor m}ste skickas. Siffran "1" representerar sant v{rde och "0"
-falskt. Bitarna skickas i den ordning de st}r listade i den abstrakta
-syntaxen.
-
-	shape-of-world : BITSTRING (
-	  is-flat; is-round; is-3d; is-2d;	! e.g. "0110"
-	)
-
-ARRAY {r en lista med ett visst antal element. Elementens typ noteras
-omedelbart efter ordet ARRAY. F|rst skickas en INTEGER som ger antalet
-element, sedan skickas tecknet "{", d{refter alla elementen i f|ljd
-och slutligen tecknet "}". Tecknen "{" och "}" fyller egentligen ingen
-funktion, men underl{ttar n{r man k|r protokollet "r}tt".  Exempel:
-
-	hackers : ARRAY HOLLERITH;
-	! e.g. 4 { 8Haronsson 7Hbellman 4Hinge 5Hceder }
-
-SELECTION {r en INTEGER med efterf|ljande svans. Vilken typ svansen
-har beror p} v{rdet av heltalet. F|r vissa v{rden kan svansen vara
-tom. V{rdet anges i den abstrakta syntaxen med "nummer=namn".
-Exempel:
-
-	phrase : SELECTION (
-	  1=hello	name:HOLLERITH;		! e.g. "1 4HJohn"
-	  2=howdy	;			! e.g. "2"
-	)
-
-RPC {r en mycket speciell notation som anv{nds f|r protokoll med
-remote procedure calls, dvs fr}gor och svar. Notationen f|r RPC ser ut
-som SELECTION, men varje alternativ har tv} svansar: fr}gan och
-svaret. Selectornumret skickas bara tillsammans med fr}gan. Exempel:
-
-	phrases : RPC (
-	  1=cost    inventory:INTEGER;	price:INTEGER;
-	  2=time    timezone:INTEGER;	hours:INTEGER;
-	  3=name    ;			name:HOLLERITH;
-	)
-	! e.g. "1 23"->"498" "3"->"4HLars" "2 1"->"1430"
-
-Datastrukturen struct/record markeras i den abstrakta syntaxen bara
-med omgivande "(" och ")". Detta inneb{r inte att n}gra extra tecken
-skickas i protokollet.
-
-
-				Dialog
-
-En session b|rjar alltid med en uppkoppling, d{r klienten v{ljer
-protokoll genom att skicka en
-
-	uppkopplingsbeg{ran : ( "A"; loginnamn : HOLLERITH; )
-
-vilken besvaras fr}n servern av en
-
-	uppkopplingsbekr{ftelse : "LysKOM\n"
-
-D{refter har vi finns bara RPC-protokollet commands. Klienten f}r
-skicka flera fr}gor innan den f}tt svar p} det f|rsta. F|r att h}lla
-reda p} till vilket anrop ett visst svar h|r, v{ljer klienten ett
-referensnummer att medf|lja och samma nummer }terfinns i svaret. Det
-{r klientens sak att fritt v{lja och h}lla reda p} referensnumren.
-
-	fr}ga : (
-	  ref-no : INTEGER;
-	  commands-call;
-	)
-
-som, om allt g}r som det skall, besvaras fr}n servern med
-
-	ok-return : (
-	  "=";
-	  ref-no : INTEGER;
-	  commands-return;
-	)
-
-eller, om n}got misslyckades, med
-
-	error-return : (
-	  "%";
-	  ref-no : INTEGER;
-	  error-no : Error-No;
-	  error-status : INTEGER;
-	)
-
-Det skall inte vara n}got tomrum mellan "=" respektive "%" och ref-no.
-Observera att {ven f|r de funktioner d{r f-return {r inneh}llsl|st
-svarar servern med "=" eller "%" och ref-number. 
-
-
-		 S{kerhetsniv}er och privilegiebittar
-
-S{kerhet och privilegier byggs i LysKOM med tv} komponenter: Varje
-person har sig ett antal bittar tilldelad (man kan s{ga att personen
-tillh|r ett antal grupper) och varje session har dessutom en
-s{kerhetsniv} (ett tal). Varje r{ttighet kr{ver en viss bitt och en
-viss minsta niv}. De senast aktuella kombinationerna
-bitt-niv}-r{ttighet beskrivs i filen 2kom/doc/security-levels.txt, h{r
-ges en vackrare tabell:
-
-	Bitt	Niv}	R{ttighet
-	------------------------------------------------------
-	wheel				Normalt ej tilldelad
-		  0	Alltid logga in, {ven vid "crowded"
-		  6	S{tta alla Priv_bits f|r alla personer
-		  7	S{tta password f|r alla personer
-		  8	Vara organisat|r (supervisor) f|r allt
-		 10	Kan l{sa alla texter
-	------------------------------------------------------
-	admin				Normalt ej tilldelad
-		  1	St{nga av servern
-		  1	S{tta motd_of_kom
-		  1	L{sa last_login
-		  2	L{sa status f|r hemliga m|ten och
-			personer
-		  2	L{sa de skyddade delarna av statusen
-		  2	L{sa hela text_statusen,
-			{ven vid hemliga mottagare
-		  3	Byta namn p} alla
-		  4	Addera/subtrahera medlemmar
-		  4	Addera/subtrahera mottagare till texter
-		  5	S{tta superm|te
-		  5	Radera texter
-		  6	S{tta administrat|r
-	------------------------------------------------------
-	statistic			Normalt ej tilldelad
-		  2	L{sa statistikdelarna av Person-structen,
-			{ven om de {r skyddade.
-	------------------------------------------------------
-	create_conf			Normalt tilldelad
-		  0	Skapa m|ten
-	------------------------------------------------------
-	create_pers			Normalt tilldelad
-		  0	Skapa personer
-	------------------------------------------------------
-
-Enligt Thomas Bellmans erfarenheter anv{nder en administrat|r i
-praktiskt arbete bara niv}erna 0 och 255. I st{llet f|r
-s{kerhetsniv}er borde de enskilda privilegiebittarna sl}s p} och av
-individuellt. Detta kanske l|ses elegantare i kommande versioner av
-protokollet.
-
-
-			       Felkoder
-
-De felkoder som f|rekommer som svar p} RPC-anrop {r nedanst}ende. H{r
-{r de f|rklarade i nummerordning. Det finns en kort lista i alfabetisk
-ordning strax efter}t.
-
-	Error-No : SELECTION (
-	  0=no-error;		! No error has occured
-	  2=not-impl;		! Not implemented yet
-	  3=obsolete;		! No longer implemented
-	  4=pwd;		! Wrong or illegal password
-	  5=long-str;		! String too long
-	  6=login;		! Not logged in.
-	  7=login-disallowed;	! System is in 'singel-user mode'
-	  8=conf-zero;		! Attempt to use conference number 0.
-	  9=undef-conf;		! Undefined or secret conference
-	  10=undef-pers;	! Undefined or secret person
-	  11=access; 		! No 'read/write permission'
-	  12=perm;		! No permission
-	  13=not-member;	! Not member in conf
-	  14=no-such-text;	! No such global text-no, or no access
-	  15=text-zero;		! Can't use text no 0
-	  16=no-such-local-text;! No such local text-no
-	  17=local-text-zero;	! Can't use local text no 0
-	  18=bad-name;		! Too short or too long
-				! or contains illegal chars
-	  19=index-out-of-range;
-	  20=conf-exists;	! Already exists
-	  21=pers-exists;	! Already exists
-	  22=secret-public;	! Cannot be secret and !rd-prot
-	  23=letter-box;	! Cannot change letter-box flag
-	  24=ldb-err;		! Should never happen,
-				! unless Willf|r makes a mistake.
-	  25=ill-misc;		! Illegal misc field.
-				! err-stat holds field no
-	  26=illegal-info-type;	! Info-type parameter was illegal.
-				! This means that there is a
-				! bug in the client.
-	  27=already-recipient;	! Already recipient to this text.
-	  28=already-comment;	! Already comment to this text.
-	  29=already-footnote;	! Already footnote to this text.
-	  30=not-recipient;	! Not recipient
-	  31=not-comment;	! Not comment to this text.
-	  32=not-footnote;	! Not footnote to this text.
-	  33=recipient-limit;	! Too many recipients
-	  34=comm-limit;	! Too many comments
-	  35=foot-limit;	! Too many footnotes
-	  36=mark-limit;	! Too many marks.
-	  37=not-author;	! Only the author may add footnotes or
-				! delete texts.
-	  38=no-connect;	! Can't connect to specified server
-	  39=out-of-memory;	! Couldn't get memory for result
-	  40=server-is-crazy;	! Client can't understand server
-	  41=client-is-crazy;	! Client thinks that server says it
-				! can't understand client.
-	  42=undef-session;	! This session doesn't exist
-	)
-
-
-	Nummer	Felmeddelande	Nummer	Felmeddelande
-	------------------------------------------------------
-	    11	access		    28	already-comment
-	    29	already-footnote    27	already-recipient
-	    18	bad-name	    41	client-is-crazy
-	    34	comm-limit	    20	conf-exists
-	     8	conf-zero	    35	foot-limit
-	    25	ill-misc	    26	illegal-info-type
-	    19	index-out-of-range  24	ldb-err
-	    23	letter-box	    17	local-text-zero
-	     6	login		     7	login-disallowed
-	     5	long-str	    36	mark-limit
-	    38	no-connect	     0	no-error
-	    16	no-such-local-text  14	no-such-text
-	    37	not-author	    31	not-comment
-	    32	not-footnote	     2	not-impl
-	    13	not-member	    30	not-recipient
-	     3	obsolete	    39	out-of-memory
-	    12	perm		    21	pers-exists
-	     4	pwd		    33	recipient-limit
-	    22	secret-public	    40	server-is-crazy
-	    15	text-zero	     9	undef-conf
-	    10	undef-pers	    42	undef-session
-	------------------------------------------------------
-
-
-			   Asynkrona anrop
-
-N{r som helst kan servern skicka ut ett asynkront anrop. En klient
-beh|ver inte bry sig om dem. Det g}r bra att l{sa undan dem n{r ett
-svar skall l{sas. Asynkrona meddelanden b|rjar alltid med ":" och ett
-heltal som talar om hur m}nga parametrar som kommer. D{refter kommer
-en selector och parametrarna. Precis som f|r ok- och error-return {r
-d{r inget tomrum mellan ":" och f|rsta heltalet. I f|rklaringen nedan
-listas de asynkrona anropen i nummerordning, men en alfabetiskt
-sorterad lista f|ljer strax d{rp}.
-
-
-asynk-meddelande ::= (
-  ":";
-  antal-params:INTEGER;
-  meddelande : SELECTION (
-    0=new-text	( text-no : Text-No;
-		  text-stat : Text-stat )
-	! En ny text har skapats.
-
-    1=logout	person : Pers-No;
-	! G}r {ven under namnet "i-am-off" (i C-koden).
-	! K{llkoden f|r Elispklienten g|r g{llande att
-	! asynkrona anropet nummer 1 {r taget ur bruk.
-	! Det {r ersatt av anrop 13 som anger sessionsnummer.
-
-    2=who-info	( person : Pers-No;
-		  conference : Conf-No;
-		  what-am-i-doing : HOLLERITH; )
-	! K{llkoden f|r Elispklienten g|r g{llande att
-	! asynkrona anropet nummer 2 heter login, men att
-	! det hur som helst {r taget ur bruk och ersatt av
-	! asynkrona anropet nummer 9.
-
-    3=conf-deleted	! Anv ej av Elispklienten
-		???
-    4=conf-created	! Anv ej av Elispklienten
-		???
-    5=conf-changed-name
-		( conf-no : Conf-No;
-		  old-name : HOLLERITH;
-		  new-name : HOLLERITH; )
-	! G}r {ven under namnet "new-name" (i C-koden).
-
-    6=i-am-on	info : Who-Info;
-    7=database-is-syncing
-		;
-    8=forced-leave-conf	! Anv ej av Elispklienten
-		???
-    9=login	( pers-no : Pers-No;
-		  session-no : Session-No; )
-
-    10=broadcast-message
-		( sender : Pers-No;
-		  message : HOLLERITH; )
-	! Det vore estetiskt f|rdelaktigt om servern aldrig skickade
-	! asynkrona anropet nummer 10 utan h|ll sig till nummer 12.
-
-    11=crowded	;
-	! Asynkrona anropet nummer 11 betyder att n}gon har
-	! misslyckats logga in, eftersom servern inte har fler
-	! lediga f|rbindelser. Den ansvarsk{nnande anv{ndaren
-	! kan nu v{lja att logga ut f|r att bereda plats.
-
-    12=directed-message
-		( recipient : Pers-No;
-		  sender : Pers-No;
-		  message : HOLLERITH;  )
-	! Om argumentet recipient {r noll (0) i asynkrona anropet
-	! nummer 12, s} {r meddelandet riktat till alla inloggade.
-	! Det {r {nnu inte m|jligt att rikta ett meddelande till
-	! en viss session.
-
-    13=new-logout
-		( pers-no : Pers-No;
-		  session-no : Session-No; )
-  )
-)
-
-En asterisk (*) efter numret i tabellen nedan anger att det asynkrona
-anropet ersatts av n}got annat. Se ovan under respektive anrop f|r
-n{rmare beskrivning.
-
-	   Nr	Asynkront anrop	   Nr	Asynkront anrop
-	------------------------------------------------------
-	    10	broadcast-message    5	conf-changed-name
-	     4	conf-created	     3	conf-deleted
-	    11	crowded		     7	database-is-syncing
-	    12	directed-message     8	forced-leave-conf
-	     6	i-am-on		     9	login
-	     1*	logout		    13	new-logout
-	     0	new-text	     2*	who-info
-	------------------------------------------------------
-
-
-			      RPC-anrop
-
-Klienten skickar RPC-anrop med parametrar till servern. Servern svarar
-endera med ett felmeddelande (se ovan i avsnitten Dialog och Felkoder)
-eller med ett returv{rde. Nedan ges BNF-grammatiken f|r de datatyper
-som anv{nds i parametrar och returv{rden. RPC-anropen listas i
-alfabetisk ordning, men en numeriskt sorterad lista f|ljer strax
-efter}t.
-
-
-commands : RPC (
-  ! Anropsnummer och -namn
-	! Datayp f|r anropsparameter
-	! Datatyp f|r returv{rde
-	
-  32=add-comment
-	params : ( comment : Text-No;
-		   comment-to : Text-No; )
-	;
-
-
-  37=add-footnote
-	params : ( footnote : Text-No;
-		   footnote-to : Text-No; )
-	;
-
-  14=add-member
-	params : ( conf-no : Conf-No;
-		   pers-no : Pers-No;
-		   priority : INTEGER;
-		   where : INTEGER;	 )
-	;
-	! Addera angiven person som medlem i angivet m|te
-	! Priority {r prioriteten p} l{slistan
-	! Where {r placering p} listan, 0 (noll) eller st|rre
-	! RPC-anropet nummer 14 anv{nds {ven senare f|r att {ndra
-	! prioritet och plats p} listan.
-
-  30=add-recipient
-	! The sequence "conf-no, type" is a reversed Misc-Info.
-	! Type is recpt or cc_recpt.
-	add-recipient-params : ( text-no : Text-No;
-				 conf-no : Conf-No;
-				 type : INTEGER;    )
-	;
-
-  45=broadcast
-	message : HOLLERITH;
-	;
-	! Ett privilegierat anrop.
-	! Samma effekt kan n}s genom magisk parameter till anrop 53.
-	! En gammal felaktig kommentar g|r g{llande att parametern
-	! skulle vara ett text-no, men s} {r inte fallet.
-
-   3=change-name
-	change-name-params : ( conf-no : Conf-No;
-			       new-name : HOLLERITH; )
-	;
-	! Anropet nummer 3 byter namn p} angivet m|te eller person.
-
-   4=change-what-i-am-doing
-	what-am-i-doing : HOLLERITH;
-	;
-	! Den medskickade texten kommer att visas i vilka-listan,
-	! se {ven anropet nummer 51.
-
-  10=create-conf
-	params : ( name : HOLLERITH;
-		   type : Conf-Type;  )
-	result : Conf-No;
-
-   5=create-person
-	create-person-params : ( name : HOLLERITH;
-				 passwd : HOLLERITH; )
-	Pers-No;
-	! En ny person skapas med angivet namn och l|senord.
-	! Den skapade personens personnummer returneras.
-
-  28=create-text
-	! create-text-return returns text number zero on error
-	! NB! Only Misc-Infos 0,1,2,4 can be sent here.
-	params : ( text : HOLLERITH;
-		   misc-info : ARRAY Misc-Info )
-	result : Text-No;
-
-  11=delete-conf
-	conf : Conf-No;
-	;
-	! Utpl}na ett m|te eller en person.
-
-  29=delete-text
-	Text-No;
-	;
-
-  55=disconnect
-	session-no : Session-No;
-	;
-	! Disconnect a session. You can disconnect your own session
-	! (even if you are not logged in) and any session where you
-	! are supervisor of the user that is logged in on that
-	! session.
-
-  42=enable
-	ena-level : INTEGER;
-	;
-	! This is a privileged call.
-	! Set ena-level. Zero means don't use any privileges.
-
-  50=get-conf-stat
-	conf-no : Conf-No;
-	result : Conference;
-	! Returnera m|tesstatus f|r angivet m|te
-
-  13=get-conf-stat-old
-	params : ( conf-no : Conf-No;
-		   mask : INTEGER;	 )
-	result : Conference
-	! Eftersom den mask som ing}r i params f|ga beaktas,
-	! har anropet nummer 13 ersatts av anropet 50.
-	! M|tesstatusen f|r det angivna m|tet returneras.
-	! Om masken {r ett j{mnt tal, s} skickas ett tomt f{lt (0H)
-	! name i svaret. Fr}n b|rjan var det t{nkt:
-	! mask = name + members + texts + list-sizes -- just use 255
-
-  47=get-created-texts
-	params : ( person : Pers-No;
-		   first : Local-Text-No;
-		   no-of-texts : INTEGER; )
-	created-texts : Text-List;
-	! NB! first is a text number local to the person who wrote it.
-	!     It is not a Local-Text-No in his mailbox.
-
-  34=get-map
-	params : ( conf-no : Conf-No;
-		   first-local-no : Local-Text-No;
-		   no-of-texts : INTEGER; )
-	result : Text-List;
-
-  23=get-marks
-	;
-	Mark-List;
-
-  48=get-members
-	params : ( conf : Conf-No;
-		   first : INTEGER;
-		   no-of-members : INTEGER; )
-	members : Member-List;
-	! first should perhaps be Local-Conf-No...
-
-  46=get-membership
-	params : ( person : Pers-No;
-		   first : INTEGER;
-		   no-of-confs : INTEGER;
-		   mask : BITSTRING (want-read-texts); )
-	memberships : Membership-List;
-	! first should perhaps be Local-Conf-No...
-
-  49=get-person-stat
-	person : Pers-No;
-	result : Person;
-	! Personstatusen f|r den angivna personen returneras.
-
-   6=get-person-stat-old
-	params : ( person : Pers-No;
-		   mask : INTEGER;   )
-	result : Person;
-	! Eftersom den mask som ing}r i params f|ga beaktas,
-	! har anropet nummer 6 ersatts av anropet 49.
-	! Personstatusen f|r den angivna personen returneras.
-	! Om masken {r ett j{mnt tal, s} skickas ett tomt f{lt (0H)
-	! username i svaret.
-
-  36=get-server-info
-	;
-	result : Info;
-	! Return various information about the server.
-	! Anrop 36 hette tidigare get-info med samma semantik.
-
-  54=get-session-info
-	session-no : Session-No;
-	result : Session-Info;
-
-  25=get-text
-	params : ( text : Text-No;
-		   start-char : INTEGER;
-		   end-char : INTEGER;   )
-	result : HOLLERITH;
-
-  26=get-text-stat
-	params : Text-No;
-	result : Text-Stat;
-
-  35=get-time
-	;
-	Time;
-
-  52=get-unread-confs
-	pers-no : Pers-No;
-	conf-no-list : ARRAY Conf-No;
-
-   0=login
-	login-params : ( person : Pers-No;
-			 passwd : HOLLERITH; )
-	;
-
-   1=logout
-	;
-	;
-	! Anropet nummer 1 misslyckas aldrig.
-
-  12=lookup-name
-	name : HOLLERITH;
-	result : Conf-List-Old;
-	! Expandera ett f|rkortat namn och returnera en lista
-	! med nummer p} de m|ten och personer som det kan vara.
-	! Se kommentaren vid definitionen av Conf-List.
-
-  27=mark-as-read
-	params : ( conference : Conf-No;
-		   texts : ARRAY Local-Text-No; )
-	;
-
-  24=mark-text
-	params : ( text : Text-No;
-		   mark-type : INTEGER; )
-	! mark-type = permanently-marked -- just use 255 (?)
-	! The server only stores (does not act upon) this value.
-	;
-
-   2=pepsi
-	Conf-No;
-	;
-	! Anropet nummer 2 anv{nds f|r att g} till det angivna m|tet.
-	! Det engelska namnet {r change conference.
-	! Namnet "Pepsi" h|r till avdelningen mer krystade vitsar.
-
-   9=query-read-texts
-	params : ( pers-no : Pers-No;
-		   conf-no : Conf-No;  )
-	result : Membership;
-	! Man kan fr}ga efter ol{sta utan att logga in.
-
-  53=send-message
-	params : ( recipient : Pers-No;
-		   message : HOLLERITH; )
-	;
-	! Ett privilegierat anrop.
-	! Om mottagaren {r nummer noll, skickas meddlandet till
-	! samtliga inloggade personer. Detta kan ers{tta anrop 45.
-
-  17=set-conf-motd
-	params : ( conf-no : Conf-No;
-		   text-no : Text-No; )
-	;
-	! S{tt lappen text-no p} d|rren till conf-no.
-	! Set-presentation och set-etc-motd trollar dessutom
-	! med f{ltet no-of-marks i textstatusen f|r den gamla
-	! och den nya presentationstexten.
-	! Anrop 17 hette f|rr set-etc-motd med samma semantik.
-
-  21=set-conf-type
-	params : ( conf-no : Conf-No;
-		   type : Conf-Type   )
-	;
-	! M|tet conf-no {r av typen type.
-
-  22=set-garb-nice
-	params : ( conf-no : Conf-No;
-		   nice : Garb-Nice;  )
-	;
-	! Inl{gg i m|tet conf-no sparas i nice dagar innan de raderas.
-
-  41=set-motd-of-lyskom
-	motd : Text-No;
-	;
-	! This is a privileged call.
-	! The text indicated by the parameter is set to be the message
-	! of the day of LysKOM.
-
-   8=set-passwd
-	params : ( person : Pers-No;
-		   old-pwd : HOLLERITH;
-		   new-pwd : HOLLERITH; )
-	;
-	! Ge personen ett nytt l|senord. Old-pwd {r det (gamla)
-	! l|senordet f|r personen som g|r RPC-anropet (inte
-	! n|dv{ndigt samma som anges av f|rsta argumentet).
-
-  19=set-permitted-submitters
-	params : ( conf-no : Conf-No;
-		   perm-sub : Conf-No; )
-	;
-	! M|tet conf-no {r skrivskyddat.
-	! Endast medlemmar i perm-sub f}r skriva inl{gg i conf-no.
-	! Om perm-sub {r 0 (noll) (???) {r m|tet inte skrivskyddat.
-
-  16=set-presentation
-	params : ( conf-no : Conf-No;
-		   text-no : Text-No; )
-	;
-	! [ndra presentationen f|r angivet m|te eller person.
-	! Ange text-no 0 (noll) f|r att ta bort presentationen.
-	! Set-presentation och set-etc-motd trollar dessutom
-	! med f{ltet no-of-marks i textstatusen f|r den gamla
-	! och den nya presentationstexten.
-
-   7=set-priv-bits
-	params : ( person : Pers-No;
-		   privileges : Priv-Bits )
-	;
-	! Ge eller ta n}gra bittar f|r den angivna personen.
-
-  20=set-super-conf
-	params : ( conf-no : Conf-No;
-		   super-conf : Conf-No; )
-	;
-	! G|r super-conf till superm|te (organisat|r?) f|r m|tet
-	! conf-no. Om conf-no {r skrivskyddat, s} skickas eventuella
-	! brev vidare till superm|tet.
-
-  18=set-supervisor
-	params : ( conf-no : Conf-No;
-		   admin : Conf-No; )
-	;
-	! G|r alla medlemmar i m|tet admin till administrat|rer (???)
-	! f|r m|tet conf-no. Admin {r typiskt en persons brevl}da.
-
-  40=set-unread
-	params : ( conference : Conf-No;
-		   no-of-unread : INTEGER; )
-	;
-	! Endast l{sa no-of-unread senaste i angivet m|te.
-
-  57=set-user-area
-	params : ( pers-no : Pers-No;
-		   user-area : Text-No; )
-	;
-	! Angiven text anv{nds f|r att lagra angiven persons
-	! variabler. Hur detta g}r till borde kanske behandlas
-	! i ett separat kapitel.
-
-  44=shutdown
-	exit-val : INTEGER;
-	;
-	! This is a privileged call.
-	! Shutdown server.
-	! An old comment says exit-val is not used by the server.
-	! Samma effekt n}s genom kill -HUP mot servern.
-
-  33=sub-comment
-	params : ( comment : Text-No;
-		   comment-to : Text-No; )
-	;
-
-  38=sub-footnote
-	params : ( footnote : Text-No;
-		   footnote-to : Text-No; )
-	;
-
-  15=sub-member
-	params : ( conf-no : Conf-No;
-		   pers-no : Pers-No; )
-	;
-	! Subtrahera angiven person som medlem i angivet m|te.
-
-  31=sub-recipient
-	params : ( text-no : Text-No;
-		   conf-no : Conf-No; )
-	;
-
-
-  43=sync
-	;
-	;
-	! Make LysKOM sync its files. This is a privileged call.
-	! Samma effekt n}s med kill -SIGUSR1 mot servern.
-
-  56=who-am-i
-	;
-	sesson-no : Session-No;
-
-  39=who-is-on-old
-	;
-	result : Who-Info-List-Old;
-	! Anrop nummer 39 {r ersatt av anrop 51, vars svar ger
-	! mer information.
-
-  51=who-is-on
-	;
-	result : Who-Info-List;
-	! Svaret {r en lista med information om nu aktiva sessioner.
-)
-
-De anrop vars nummer i listan nedan f|ljs av en asterisk (*) {r
-ersatta av modernare verianter i den nuvarande versionen (0.33) av
-Elisp-klienten.
-
-	Nummer	RPC-Anrop	Nummer	RPC-Anrop
-	------------------------------------------------------
-	     0	login		     1	logout
-	     2	pepsi		     3	change-name
-	     4	change-what-i-am-doing
-	     5	create-person	     6*	get-person-stat-old
-	     7	set-priv-bits	     8	set-passwd
-	     9	query-read-texts    10	create-conf
-	    11	delete-conf	    12	lookup-name
-	    13*	get-conf-stat-old   14	add-member
-	    15	sub-member	    16	set-presentation
-	    17	set-conf-motd	    18	set-supervisor
-	    19	set-permitted-submitters
-	    20	set-super-conf	    21	set-conf-type
-	    22	set-garb-nice	    23	get-marks
-	    24	mark-text	    25	get-text
-	    26	get-text-stat	    27	mark-as-read
-	    28	create-text	    29	delete-text
-	    30	add-recipient	    31	sub-recipient
-	    32	add-comment	    33	sub-comment
-	    34	get-map		    35	get-time
-	    36	get-server-info	    37	add-footnote
-	    38	sub-footnote	    39*	who-is-on-old
-	    40	set-unread	    41	set-motd-of-lyskom
-	    42	enable		    43	sync
-	    44	shutdown	    45*	broadcast
-	    46	get-membership	    47	get-created-texts
-	    48	get-members	    49	get-person-stat
-	    50	get-conf-stat	    51	who-is-on
-	    52	get-unread-confs    53	send-message
-	    54	get-session-info    55	disconnect
-	    56	who-am-i	    57  set-user-area
-	------------------------------------------------------
-
-
-			Konstruerade datatyper
-
-H{r definieras de datatyper som sedan anv{nds i RPC-anrop fr}n
-klienten till servern och i asynkrona anrop fr}n servern till
-klienten. Datatyperna listas i bokstavsordning.
-
-
-! Pers-no and Conf-no are u_shorts in the same domain.
-Conf-No ::= INTEGER;
-Conf-No-List ::= ARRAY Conf-No;		! Anv{nds var?
-
-Conf-List ::= ARRAY ( conference : Conf-No;
-		      type : Conf-Type;	    )
-
-! Som svar p} anrop 12 ges Conf-List-Old, som inte kan formuleras
-! med den h{r BNF-grammatiken. Conf-List borde returneras, men d}
-! vore inte LysKOM bak}tkompatibelt.
-! Conf-List-Old:   "3 { 3 45 62 } { 1001 0000 1001 }"
-! Conf-List:	   "3 { 3 1001  45 0000  62 1001 }"
-
-Conf-Type ::= BITSTRING (
-  rd_prot;		! Can anyone become a member?
-  original;		! Comments forbidden?
-  secret;		! Secret mailboxes cannot easily login by name
-  letterbox;		! Mailbox
-)
-
-Conference ::= (
-  name : HOLLERITH;
-  type : Conf-Type;
-  creation-time : Time;
-  last-written : Time;
-  creator : Pers-No;
-  presentation : Text-No;
-  supervisor : Conf-No;
-  permitted-submitters : Conf-No;	! Zero means anybody
-  super-conf : Conf-No;			! Zero means author
-  msg-of-day : Text-No;			! Every conf has one
-  nice : Garb-Nice;
-  no-of-members : INTEGER;
-  first-local-no : Local-Text-No;	! Oldest text still stored
-  no-of-texts : INTEGER;		! How many texts stored
-)
-
-Garb-Nice ::= INTEGER;			! Number of days
-
-Info ::= (
-  version : INTEGER;
-  conf-pres-conf : Conf-No;		! M|tet Pres (nya) m|ten
-  pers-pres-conf : Conf-No;		! M|tet Pres (nya) medlemmar
-  motd-conf : Conf-No;			! M|tet Lappar p} d|rren
-  kom-news-conf : Conf-No;		! M|tet Nyheter om LysKOM
-  motd-of-lyskom : Text-No;		! Visas vid login
-)
-
-! kom-types.h defines Info-Datum as the tail in Misc-Info
-! kom-types.h defines Info-Type as the selector in Misc-Info
-
-Local-Text-No ::= INTEGER;
-
-Mark ::= ( text-no : Text-No; type : INTEGER )
-	! Servern ger sig inte p} att tolka markeringstypen,
-	! det {r helt upp till klienten.
-
-Mark-List ::= ARRAY Mark;
-
-
-Member ::= Pers-No;
-Member-List ::= ARRAY Member;
-Membership ::= (
-  last-time-read : Time;
-  conference : Conf-No;
-  priority : INTEGER;
-  last-text-read : Local-Text-No;
-  read-texts : ARRAY Local-Text-No;
-)
-
-Membership-List ::= ARRAY Membership;
-
-Misc-Info ::= SELECTION (
-  0=recpt	recipient : Conf-No;		! Mottagare
-  1=cc-recpt	cc-recipient : Conf-No;		! Extra kopia
-  2=comm-to	comment-to : Text-No;		! Kommentar till
-  3=comm-in	commented-in: Text-No;		! Kommentar i
-  4=footn-to	footnote-to : Text-No;		! Fotnot till
-  5=footn-in	footnoted-in : Text-No;		! Fotnot i
-  6=loc-no	local-no : Local-Text-No	! Lokalt textnummer
-  7=rec-time	received-at : Time;		! Mottaget tid
-  8=sent-by	sender : Pers-No;		! S{nt av
-  9=sent-at	sent-at : Time;			! S{nt n{r
-! 10=...-recpt	???				! F|r k{nnedom
-)
-
-Pers-List ::= ARRAY Pers-No;
-
-Pers-No ::= Conf-no;
-
-Person ::= (
-  username : HOLLERITH;			! E-mail adress
-  privileges : Priv-Bits;
-  flags : Personal-Flags;
-  last-login : Time;			! Eller logout?
-  user-area : Text-No;
-  total-time-present : INTEGER;		! I sekunder
-  sessions : INTEGER;
-  created-lines : INTEGER;
-  created-bytes : INTEGER;
-  read-texts : INTEGER;
-  no-of-text-fetches : INTEGER;
-  created-persons : INTEGER;
-  created-confs : INTEGER;
-  first-created-local-no : INTEGER;  	! Well, local isn't really true but...
-  no-of-created-texts : INTEGER;     	! Numbers of texts in the ARRAY,
-					! i.e. not erased ones.
-  no-of-marks : INTEGER;
-  no-of-confs : INTEGER;
-)					! /mo
-
-Personal-Flags ::= BITSTRING (
-  unread-is-secret;
-	! V{rdet 1 betyder att antalet ol{sta texter h}lls hemligt
-  flg2; flg3; flg4; flg5; flg6; flg7; flg8;
-)
-
-! Se avsnittet ovan om s{kerhetsniv}er och privilegiebittar.
-Priv-Bits ::= BITSTRING (
-  wheel; admin; statistic; create_pers; create_conf; change_name;
-  flg7; flg8; flg9; flg10; flg11; flg12; flg13; flg14; flg15; flg16;
-)
-
-! Session-Info {r v{ldigt likt Who-Info.
-Session-Info ::= (
-  person : Pers-No;
-  working-conference : Conf-No;
-  session : Session-No;
-  what-am-i-doing : HOLLERITH;
-  username : HOLLERITH;		! user@host
-  idle-time : INTEGER;		! Sekunder sedan senaste anrop
-  connection-time : Time;	! Tid och datum f|r uppkoppling
-				! Detta {r ej detsamma som login-tid
-)
-
-! Session numbers are unique to each session. A person can have
-! more than one session running at the same time. Session numbers
-! are assigned starting from 1 up. Session numbers are not reused
-! during the lifetime of the server. See Who-Info-List
-Session-No ::= INTEGER;
-
-Text-List ::= ( first-local-no : Local-Text-No;
-		texts : ARRAY Text-No;		)
-
-! Text-No is a u_long.
-Text-No ::= INTEGER;
-
-Text-Stat ::= (
-  creation-time : Time;
-  author : Pers-No;
-  no-of-lines : INTEGER;
-  no-of-chars : String-Size;
-  no-of-marks : INTEGER;
-  misc-info : ARRAY Misc-Info;
-)
-
-! UNIX <time.h> struct tm. No time zone.
-Time ::= (
-  seconds : INTEGER;		! 0 ... 59
-  minutes : INTEGER;		! 0 ... 59
-  hours : INTEGER;		! 0 ... 23
-  mday : INTEGER;		! 1 ... 31
-  month : INTEGER;		! jan = 0 ... dec = 11
-  year : INTEGER;		! Sedan 1900
-  weekday : INTEGER;		! s|n = 0 ... SAT = 6
-  yearday : INTEGER;		! 0 ... 365
-  isdst : INTEGER;		! positivt = sommartid, 0 = normaltid
-)
-  
-Who-Info-Old ::= (
-  person : Pers-No;
-  what-am-i-doing : HOLLERITH;
-  working-conference : Conf-No;
-)
-Who-Info-List-Old ::= ARRAY Who-Info-Old;
-
-Who-Info ::= (
-  person : Pers-No;
-  working-conference : Conf-No;
-  session : Session-No;
-  what-am-i-doing : HOLLERITH;
-  username : HOLLERITH;		! user@hostname
-)
-
-Who-Info-List ::= ARRAY Who-Info;
-
-
-
-			       Exempel
-
-Nedan ett exempel fr}n en verklig LysKOM-session. Kommentarer har jag
-gett med "!" som i grammatiken. Exemplet {r gammalt och inneh}ller en
-del detaljer som senare tagits ur bruk, men det ger {nd} en ide om hur
-det r}a protokollet ser ut.
-
-	$ telnet laila 4894
-	Trying 130.236.254.12 ...
-	Connected to laila.lysator.liu.se.
-	Escape character is '^]'.
-	A8Haronsson	 		! Jag k|r protokoll A
-	LysKOM 				! LysKOM svarar
-	1 12 13HLars Aronsson 		! lookup-name
-	=1 2 { 8 38 } { 1001 1001 } 	! Person 8 eller Person 38
-	:3 2 21 7 0H 			! Person 21 gick till m|te 7
-	:1 1 56 			! Person 56 loggade just ut
-	2 0 8 8H******** 		! login Person 8 med password
-	:3 2 8 0 0H 			! Person 8 loggade just in
-	=2 				! login OK
-	3 10 23HAntikommunistiskt Forum 0000 
-					! Jag skapar ett |ppet m|te
-	=3 57 				! OK, m|te 57 skapat
-	4 1 				! Jag loggar ut
-	:1 1 8 				! Person 8 loggade just ut
-	=4 				! logout OK
diff --git a/doc/prot-A.slightly-obsolete b/doc/prot-A.slightly-obsolete
deleted file mode 100644
index 7664414be..000000000
--- a/doc/prot-A.slightly-obsolete
+++ /dev/null
@@ -1,230 +0,0 @@
-
-
-			   LysKOM-Projektet
-		   --------------------------------
-	      Beskrivning av server-klient-protokollet,
-			 version A, i LysKOM
-		   --------------------------------
-			   av Lars Aronsson
-		      <aronsson@lysator.liu.se>
-			     datum ok{nt
-
-
-
-Kommunikationen till servern sker i klartext. P} s} vis {r det m|jligt
-att provk|ra utan att ha en klient ig}ng. Avlusningen blev ocks}
-enklare.
-
-
-UPPKOPPLING
-
-Vid uppkoppling s{nder klienten ett 'A' f|ljt av login-identiteten f|r
-anv{ndaren (en str{ng, se nedan). Servern svarar med att skicka
-"LysKOM\n". Sedan {r uppkopplingen gjord.
-
-FUNKTIONSANROP
-
-Vid ett funktionsanrop skickas f|ljande data fr}n klienten till
-servern:
-
-	ref-nr  funktions-nr parametrar
-
-ref-nr {r ett heltal (unsigned, max 32 bitar) som klienten kan v{lja
-fritt, t ex som ett l|pnummer.
-
-funktions-nr {r ett heltal som anger vilken funktion man vill anropa.
-De definieras i isc/com.h.
-
-Om anropet lyckades ser svaret ut s} h{r:
-
-	=ref-nr  svar
-
-Om det misslyckas:
-
-	%ref-nr  kom_errno err_stat
-
-
-
-DATAFORMAT
-
-Allt som skickas (utom m|jligtvis innuti str{ngar) {r ASCII. Bortsett
-fr}n innuti str{ngar skickas inga kontrolltecken. Whitespace anv{nds
-f|r att skilja olika f{lt }t. Som whitespace r{knas ' ', \r, \n, \t
-och \000. (Ett funktionsanrop beh|ver inte avslutas med \n, det g}r
-lika bra med vilken whitespace som helst, men det m}ste finnas en
-whitespace - det r{cker inte med att paketet tar slut).
-
-Alla tal, (t ex int, Pers_no, Conf_no) skickas i decimal form.
-
-Enumar skickas i decimal form.
-
-Str{ngar skickas som Hollerith-str{ngar, dvs f|rst ett heltal som
-anger l{ngden, sen ett H, sen str{ngen. Innuti en str{ng kan vilka
-tecken som helst komma. (0-255).
-
-Arrayer skickas inom m}svingar. T ex kan en Text_list som ser ut s}
-h{r:
-typedef  struct {
-	Local_text_no	  first_local_no,
-    			  no_of_texts;
-	Text_no		* texts;
-}  Text_list;
-
-skickas s} h{r:
-	5 3 { 8 9 11 }
-
-eller, om texts==NULL:
-	5 3 *
-
-Asterisk anv{nds allts} f|r att markera en tom array. (Till exempel om
-man inte fr}gar efter Membership). Asterisk-notationen kan bara
-anv{ndas i rikting fr}n servern till klienten. 
-
-
-EXEMPEL
-
-S} h{r kan en k|rning se ut.
-
-Klienten skickar	Servern svarar		F|rklaring
-================	==============		==========
-
-A5Hceder		LysKOM\n		Uppkoppling.
-1 37			=1 100 1 2 3 4 5712	Get_info
-69 27 5712		=69 {textstat}		Get_text_stat
-18 26 5712		=18 {textmassa}		Get_text
-2 1 334 5HaBcdE		%2 3 0 0 0		Login, misslyckas. (KOM_PWD)
-3 1 334 5HaBcDe		=3			Login, lyckas.
-...
-9 2			=9			Logout (beh|vs eg. ej)
-
-
-FELHANTERING
-
-Om servern tar emot text som inte st{mmer med det protokoll som f|r
-tillf{llet {r implementerat (f|rhoppningsvis, men ej n|dv{ndigtvis,
-det som {r beskrivet h{r) skriver den ut "%% LysKOM protocol error.\n"
-
-ASYNKRONA MEDDELANDEN
-
-Servern skickar ibland ut meddelanden som clienterna kanske tycker {r
-intressanta. Formatet f|r dessa {r:
-
-	:no_of_tokens function < tokens >
-
-De b|rjar allts} med ":" i st{llet f|r "=" eller "%". Genom att
-antalet token alltid s{nds s} kan {ven gamla klienter "|verleva" en ny
-klient med nya asynkrona meddelanden. Det {r bara att hoppa |ver r{tt
-antal token.
-
-Termen "asynkrona meddelanden" {r lite oegentlig. Meddelanden {r
-synkroniserade med allt annat som skickas ut fr}n servern. Ett
-meddelanden kommer bara n{r ett svar skulle ha kommit.
-
-DATAFORMAT F\R SAMMANSATTA TYPER
-
-Person
-	username	str{ng
-	privileges	bitstr{ng
-	personal_flags	bitstr{ng
-	created_texts:
-	    first_local_no
-	    no_of_texts
-	    texts	array
-	marks:
-	    no_of_marks
-	    marks	array
-	conferences:
-	    no_of_confs
-	    confs:	array
-		conf_no
-		priority
-		last_time_read
-		last_text_read
-		no_of_read
-		read_texts	array
-	user_area
-	last_login
-	total_time_present
-	sessions
-	created_lines
-	created_bytes
-	read_texts
-	no_of_text_fetches
-	created_persons
-	created_confs
-
-
-
-Conference
-
-	name	str{ng
-	members:
-	    no_of_members
-	    members:	array
-		member	(Pers_no)
-	texts:
-	    first_local_no
-	    no_of_texts
-	    texts	array (Text_no)
-	conf_type	bitstr{ng
-	creator
-	creation_time
-	presentation
-	supervisor
-	permitted_submitters
-	super_conf
-	last_written
-	msg_of_day
-	nice
-
-
-Text_stat
-
-	author
-	creation_time
-	no_of_lines
-	no_of_marks
-	no_of_misc
-	misc_info:	array
-	    type	0 recpt
-			1 cc_recpt
-			2 comm_to
-			3 comm_in
-			4 footn_to
-			5 footn_in
-			6 loc_no
-			7 rec_time
-			8 sent_by	
-			9 sent_at
-	    datum
-
-
-
-Info
-	version
-	conf_pres_conf
-	pers_pres_conf
-	motd_conf
-	kom_news_conf
-	motd_of_lyskom
-
-Membership
-
-	no_of_confs
-	confs:	array
-	    conf_no
-	    priority
-	    last_time_read
-	    last_text_read
-	    no_of_read
-	    read_texts	array
-
-
-Text_list
-	first_local_no
-	no_of_texts
-	    texts	array
-
-str{ng
-	12HTolv tecken.
-
diff --git a/doc/prot-A.txt b/doc/prot-A.txt
deleted file mode 100644
index 7f025bca7..000000000
--- a/doc/prot-A.txt
+++ /dev/null
@@ -1,1067 +0,0 @@
-				   
-			   LysKOM-Projektet
-		   --------------------------------
-	Specifikation av protokoll A mellan klient och server
-		   --------------------------------
-			   av Lars Aronsson
-		      <Aronsson@Lysator.LiU.SE>
-			     25 juni 1991
-
-
-
-				LysKOM
-
-LysKOM {r ett datakonferenssystem. Andra liknande system {r QZ-KOM och
-PortaCOM. LysKOM {r Copyright (C) 1990 datorf|reningen Lysator vid
-Universitetet och Tekniska H|gskolan i Link|ping. Var och en till}ts
-fritt kopiera, {ndra och distribuera LysKOM dokument och program,
-givet att mottagarna ges samma r{ttigheter. Varken Lysator eller dess
-medlemmar tar n}got som helst ansvar f|r dokumentens eller programmens
-riktighet eller f|ljderna av deras anv{ndande.
-
-
-			    Den h{r texten
-
-Den h{r texten specificerar version A av det protokoll som anv{nds
-mellan en klient (anv{ndarens program) och en server (databasen). Den
-h{r texten {r t{nkt att inneh}lla allt du beh|ver veta f|r att skriva
-en klient utan att veta n}got om servern, eller tv{rtom.
-
-Mitt syfte {r att den h{r texten skall vara s} fullst{ndig och korrekt
-som m|jligt. Om du hittar n}gra fel, eller kommer p} n}got som saknas,
-s} h|r g{rna av dig till mig. F|ljande {r de saker som jag vet saknas
-i den h{r texten:
-
-	Vad som lagras i en anv{ndares "user-area", och hur.
-
-
-				Filer
-
-Den h{r filen {r en mer systematisk sammanst{llning av nedan
-uppr{knade filer.  Det {r m|jligt att filerna har {ndrat namn, antal
-och utseende n{r du l{ser detta. S} h{r hette de den 3 juni 1991:
-
-	2kom/doc/com-spec		-- borta!
-	2kom/doc/security-levels.txt
-	2kom/include/kom-types.h
-	2kom/include/kom-errno.h
-	2kom/isc-client/com.h
-	2kom/server/fncdef.txt		-- borta?
-	2kom/include/services.h
-
-
-		       Underliggande protokoll
-
-LysKOM Protokoll A kan k|ras ovanp} vilken tillf|rlitlig dubbelriktad
-8-bitars bytekanal som helst. I n|dfall kan det ocks} k|ras p} en
-7-bitars bytekanal. Idag k|rs det ovanp} Telnet/TCP/IP. P} Lysator
-anv{nds telnetport 4894 p} IP-host 130.236.254.12 (laila).  Data i
-protokoll A sker i ASCII klartext. I hollerithstr{ngar (se nedan) f}r
-godtyckliga 8-bitars bytes f|rekomma, men tanken {r att man skall
-kunna k|ra protokollet "r}tt" fr}n en textterminal.
-
-
-		       Abstrakt syntaxnotation
-
-I den h{r specifikationen har en BNF-liknande grammatik anv{nts f|r
-att beskriva protokollets dataelement. Det {r mycket vetenskapligt,
-f|r s} g|r de som specar OSI-protokoll. Den h{r grammatiken borde
-likna ASN.1 mer {n den g|r, men jag har inte ASN.1-specen h{r.
-Dataf{lt har givits namn med liten begynnelsebokstav, datatyper med
-stor. Operatorn "::=" definierar (som i BNF) och ":" ger typ (som i
-Pascal). Kommentarer inleds med "!" och avslutas med radslut (som i
-BLISS). Semikolon anv{nds som i C. De grundl{ggande typerna och deras
-notation beskrivs h{rn{st.
-
-
-		       Grundl{ggande datatyper
-
-Dataelementen som skickas med protokollet }tskiljs av (godtyckliga
-sekvenser av) mellanslag, tab-tecken, line-feed, return, eller NULL.
-Undvik att skicka NULL, men var beredd p} att tolka det som ett
-mellanslag.
-
-INTEGER {r icke-negativa heltal som skall rymmas p} 32 bitar. De
-skickas som text p} decimal form.
-
-HOLLERITH {r textstr{ngar. F|rst skickas str{ngens l{ngd som en
-INTEGER, sedan bokstaven "H" och d{refter (utan }tskiljande
-mellanslag!) texten. Texten f}r inneh}lla vilka byte-v{rden som helst
-fr}n 0 till 255.
-
-BITSTRING skickas som text representerande ett heltal p} bin{r form.
-Antal bitar i str{ngen framg}r alltid av sammanhanget. [ven inledande
-nollor m}ste skickas. Siffran "1" representerar sant v{rde och "0"
-falskt. Bitarna skickas i den ordning de st}r listade i den abstrakta
-syntaxen.
-
-	shape-of-world : BITSTRING (
-	  is-flat; is-round; is-3d; is-2d;	! e.g. "0110"
-	)
-
-ARRAY {r en lista med ett visst antal element. Elementens typ noteras
-omedelbart efter ordet ARRAY. F|rst skickas en INTEGER som ger antalet
-element, sedan skickas tecknet "{", d{refter alla elementen i f|ljd
-och slutligen tecknet "}". Tecknen "{" och "}" fyller egentligen ingen
-funktion, men underl{ttar n{r man k|r protokollet "r}tt".  Exempel:
-
-	hackers : ARRAY HOLLERITH;
-	! e.g. 4 { 8Haronsson 7Hbellman 4Hinge 5Hceder }
-
-SELECTION {r en INTEGER med efterf|ljande svans. Vilken typ svansen
-har beror p} v{rdet av heltalet. F|r vissa v{rden kan svansen vara
-tom. V{rdet anges i den abstrakta syntaxen med "nummer=namn".
-Exempel:
-
-	phrase : SELECTION (
-	  1=hello	name:HOLLERITH;		! e.g. "1 4HJohn"
-	  2=howdy	;			! e.g. "2"
-	)
-
-RPC {r en mycket speciell notation som anv{nds f|r protokoll med
-remote procedure calls, dvs fr}gor och svar. Notationen f|r RPC ser ut
-som SELECTION, men varje alternativ har tv} svansar: fr}gan och
-svaret. Selectornumret skickas bara tillsammans med fr}gan. Exempel:
-
-	phrases : RPC (
-	  1=cost    inventory:INTEGER;	price:INTEGER;
-	  2=time    timezone:INTEGER;	hours:INTEGER;
-	  3=name    ;			name:HOLLERITH;
-	)
-	! e.g. "1 23"->"498" "3"->"4HLars" "2 1"->"1430"
-
-Datastrukturen struct/record markeras i den abstrakta syntaxen bara
-med omgivande "(" och ")". Detta inneb{r inte att n}gra extra tecken
-skickas i protokollet.
-
-
-				Dialog
-
-En session b|rjar alltid med en uppkoppling, d{r klienten v{ljer
-protokoll genom att skicka en
-
-	uppkopplingsbeg{ran : ( "A"; loginnamn : HOLLERITH; )
-
-vilken besvaras fr}n servern av en
-
-	uppkopplingsbekr{ftelse : "LysKOM\n"
-
-D{refter har vi finns bara RPC-protokollet commands. Klienten f}r
-skicka flera fr}gor innan den f}tt svar p} det f|rsta. F|r att h}lla
-reda p} till vilket anrop ett visst svar h|r, v{ljer klienten ett
-referensnummer att medf|lja och samma nummer }terfinns i svaret. Det
-{r klientens sak att fritt v{lja och h}lla reda p} referensnumren.
-
-	fr}ga : (
-	  ref-no : INTEGER;
-	  commands-call;
-	)
-
-som, om allt g}r som det skall, besvaras fr}n servern med
-
-	ok-return : (
-	  "=";
-	  ref-no : INTEGER;
-	  commands-return;
-	)
-
-eller, om n}got misslyckades, med
-
-	error-return : (
-	  "%";
-	  ref-no : INTEGER;
-	  error-no : Error-No;
-	  error-status : INTEGER;
-	)
-
-Det skall inte vara n}got tomrum mellan "=" respektive "%" och ref-no.
-Observera att {ven f|r de funktioner d{r f-return {r inneh}llsl|st
-svarar servern med "=" eller "%" och ref-number. 
-
-
-		 S{kerhetsniv}er och privilegiebittar
-
-S{kerhet och privilegier byggs i LysKOM med tv} komponenter: Varje
-person har sig ett antal bittar tilldelad (man kan s{ga att personen
-tillh|r ett antal grupper) och varje session har dessutom en
-s{kerhetsniv} (ett tal). Varje r{ttighet kr{ver en viss bitt och en
-viss minsta niv}. De senast aktuella kombinationerna
-bitt-niv}-r{ttighet beskrivs i filen 2kom/doc/security-levels.txt, h{r
-ges en vackrare tabell:
-
-	Bitt	Niv}	R{ttighet
-	------------------------------------------------------
-	wheel				Normalt ej tilldelad
-		  0	Alltid logga in, {ven vid "crowded"
-		  6	S{tta alla Priv_bits f|r alla personer
-		  7	S{tta password f|r alla personer
-		  8	Vara organisat|r (supervisor) f|r allt
-		 10	Kan l{sa alla texter
-	------------------------------------------------------
-	admin				Normalt ej tilldelad
-		  1	St{nga av servern
-		  1	S{tta motd_of_kom
-		  1	L{sa last_login
-		  2	L{sa status f|r hemliga m|ten och
-			personer
-		  2	L{sa de skyddade delarna av statusen
-		  2	L{sa hela text_statusen,
-			{ven vid hemliga mottagare
-		  3	Byta namn p} alla
-		  4	Addera/subtrahera medlemmar
-		  4	Addera/subtrahera mottagare till texter
-		  5	S{tta superm|te
-		  5	Radera texter
-		  6	S{tta administrat|r
-	------------------------------------------------------
-	statistic			Normalt ej tilldelad
-		  2	L{sa statistikdelarna av Person-structen,
-			{ven om de {r skyddade.
-	------------------------------------------------------
-	create_conf			Normalt tilldelad
-		  0	Skapa m|ten
-	------------------------------------------------------
-	create_pers			Normalt tilldelad
-		  0	Skapa personer
-	------------------------------------------------------
-
-Enligt Thomas Bellmans erfarenheter anv{nder en administrat|r i
-praktiskt arbete bara niv}erna 0 och 255. I st{llet f|r
-s{kerhetsniv}er borde de enskilda privilegiebittarna sl}s p} och av
-individuellt. Detta kanske l|ses elegantare i kommande versioner av
-protokollet.
-
-
-			       Felkoder
-
-De felkoder som f|rekommer som svar p} RPC-anrop {r nedanst}ende. H{r
-{r de f|rklarade i nummerordning. Det finns en kort lista i alfabetisk
-ordning strax efter}t.
-
-	Error-No : SELECTION (
-	  0=no-error;		! No error has occured
-	  2=not-impl;		! Not implemented yet
-	  3=obsolete;		! No longer implemented
-	  4=pwd;		! Wrong or illegal password
-	  5=long-str;		! String too long
-	  6=login;		! Not logged in.
-	  7=login-disallowed;	! System is in 'singel-user mode'
-	  8=conf-zero;		! Attempt to use conference number 0.
-	  9=undef-conf;		! Undefined or secret conference
-	  10=undef-pers;	! Undefined or secret person
-	  11=access; 		! No 'read/write permission'
-	  12=perm;		! No permission
-	  13=not-member;	! Not member in conf
-	  14=no-such-text;	! No such global text-no, or no access
-	  15=text-zero;		! Can't use text no 0
-	  16=no-such-local-text;! No such local text-no
-	  17=local-text-zero;	! Can't use local text no 0
-	  18=bad-name;		! Too short or too long
-				! or contains illegal chars
-	  19=index-out-of-range;
-	  20=conf-exists;	! Already exists
-	  21=pers-exists;	! Already exists
-	  22=secret-public;	! Cannot be secret and !rd-prot
-	  23=letter-box;	! Cannot change letter-box flag
-	  24=ldb-err;		! Should never happen,
-				! unless Willf|r makes a mistake.
-	  25=ill-misc;		! Illegal misc field.
-				! err-stat holds field no
-	  26=illegal-info-type;	! Info-type parameter was illegal.
-				! This means that there is a
-				! bug in the client.
-	  27=already-recipient;	! Already recipient to this text.
-	  28=already-comment;	! Already comment to this text.
-	  29=already-footnote;	! Already footnote to this text.
-	  30=not-recipient;	! Not recipient
-	  31=not-comment;	! Not comment to this text.
-	  32=not-footnote;	! Not footnote to this text.
-	  33=recipient-limit;	! Too many recipients
-	  34=comm-limit;	! Too many comments
-	  35=foot-limit;	! Too many footnotes
-	  36=mark-limit;	! Too many marks.
-	  37=not-author;	! Only the author may add footnotes or
-				! delete texts.
-	  38=no-connect;	! Can't connect to specified server
-	  39=out-of-memory;	! Couldn't get memory for result
-	  40=server-is-crazy;	! Client can't understand server
-	  41=client-is-crazy;	! Client thinks that server says it
-				! can't understand client.
-	  42=undef-session;	! This session doesn't exist
-	)
-
-
-	Nummer	Felmeddelande	Nummer	Felmeddelande
-	------------------------------------------------------
-	    11	access		    28	already-comment
-	    29	already-footnote    27	already-recipient
-	    18	bad-name	    41	client-is-crazy
-	    34	comm-limit	    20	conf-exists
-	     8	conf-zero	    35	foot-limit
-	    25	ill-misc	    26	illegal-info-type
-	    19	index-out-of-range  24	ldb-err
-	    23	letter-box	    17	local-text-zero
-	     6	login		     7	login-disallowed
-	     5	long-str	    36	mark-limit
-	    38	no-connect	     0	no-error
-	    16	no-such-local-text  14	no-such-text
-	    37	not-author	    31	not-comment
-	    32	not-footnote	     2	not-impl
-	    13	not-member	    30	not-recipient
-	     3	obsolete	    39	out-of-memory
-	    12	perm		    21	pers-exists
-	     4	pwd		    33	recipient-limit
-	    22	secret-public	    40	server-is-crazy
-	    15	text-zero	     9	undef-conf
-	    10	undef-pers	    42	undef-session
-	------------------------------------------------------
-
-
-			   Asynkrona anrop
-
-N{r som helst kan servern skicka ut ett asynkront anrop. En klient
-beh|ver inte bry sig om dem. Det g}r bra att l{sa undan dem n{r ett
-svar skall l{sas. Asynkrona meddelanden b|rjar alltid med ":" och ett
-heltal som talar om hur m}nga parametrar som kommer. D{refter kommer
-en selector och parametrarna. Precis som f|r ok- och error-return {r
-d{r inget tomrum mellan ":" och f|rsta heltalet. I f|rklaringen nedan
-listas de asynkrona anropen i nummerordning, men en alfabetiskt
-sorterad lista f|ljer strax d{rp}.
-
-
-asynk-meddelande ::= (
-  ":";
-  antal-params:INTEGER;
-  meddelande : SELECTION (
-    0=new-text	( text-no : Text-No;
-		  text-stat : Text-stat )
-	! En ny text har skapats.
-
-    1=logout	person : Pers-No;
-	! G}r {ven under namnet "i-am-off" (i C-koden).
-	! K{llkoden f|r Elispklienten g|r g{llande att
-	! asynkrona anropet nummer 1 {r taget ur bruk.
-	! Det {r ersatt av anrop 13 som anger sessionsnummer.
-
-    2=who-info	( person : Pers-No;
-		  conference : Conf-No;
-		  what-am-i-doing : HOLLERITH; )
-	! K{llkoden f|r Elispklienten g|r g{llande att
-	! asynkrona anropet nummer 2 heter login, men att
-	! det hur som helst {r taget ur bruk och ersatt av
-	! asynkrona anropet nummer 9.
-
-    3=conf-deleted	! Anv ej av Elispklienten
-		???
-    4=conf-created	! Anv ej av Elispklienten
-		???
-    5=conf-changed-name
-		( conf-no : Conf-No;
-		  old-name : HOLLERITH;
-		  new-name : HOLLERITH; )
-	! G}r {ven under namnet "new-name" (i C-koden).
-
-    6=i-am-on	info : Who-Info;
-    7=database-is-syncing
-		;
-    8=forced-leave-conf	! Anv ej av Elispklienten
-		???
-    9=login	( pers-no : Pers-No;
-		  session-no : Session-No; )
-
-    10=broadcast-message
-		( sender : Pers-No;
-		  message : HOLLERITH; )
-	! Det vore estetiskt f|rdelaktigt om servern aldrig skickade
-	! asynkrona anropet nummer 10 utan h|ll sig till nummer 12.
-
-    11=crowded	;
-	! Asynkrona anropet nummer 11 betyder att n}gon har
-	! misslyckats logga in, eftersom servern inte har fler
-	! lediga f|rbindelser. Den ansvarsk{nnande anv{ndaren
-	! kan nu v{lja att logga ut f|r att bereda plats.
-
-    12=directed-message
-		( recipient : Pers-No;
-		  sender : Pers-No;
-		  message : HOLLERITH;  )
-	! Om argumentet recipient {r noll (0) i asynkrona anropet
-	! nummer 12, s} {r meddelandet riktat till alla inloggade.
-	! Det {r {nnu inte m|jligt att rikta ett meddelande till
-	! en viss session.
-
-    13=new-logout
-		( pers-no : Pers-No;
-		  session-no : Session-No; )
-  )
-)
-
-En asterisk (*) efter numret i tabellen nedan anger att det asynkrona
-anropet ersatts av n}got annat. Se ovan under respektive anrop f|r
-n{rmare beskrivning.
-
-	   Nr	Asynkront anrop	   Nr	Asynkront anrop
-	------------------------------------------------------
-	    10	broadcast-message    5	conf-changed-name
-	     4	conf-created	     3	conf-deleted
-	    11	crowded		     7	database-is-syncing
-	    12	directed-message     8	forced-leave-conf
-	     6	i-am-on		     9	login
-	     1*	logout		    13	new-logout
-	     0	new-text	     2*	who-info
-	------------------------------------------------------
-
-
-			      RPC-anrop
-
-Klienten skickar RPC-anrop med parametrar till servern. Servern svarar
-endera med ett felmeddelande (se ovan i avsnitten Dialog och Felkoder)
-eller med ett returv{rde. Nedan ges BNF-grammatiken f|r de datatyper
-som anv{nds i parametrar och returv{rden. RPC-anropen listas i
-alfabetisk ordning, men en numeriskt sorterad lista f|ljer strax
-efter}t.
-
-
-commands : RPC (
-  ! Anropsnummer och -namn
-	! Datayp f|r anropsparameter
-	! Datatyp f|r returv{rde
-	
-  32=add-comment
-	params : ( comment : Text-No;
-		   comment-to : Text-No; )
-	;
-
-
-  37=add-footnote
-	params : ( footnote : Text-No;
-		   footnote-to : Text-No; )
-	;
-
-  14=add-member
-	params : ( conf-no : Conf-No;
-		   pers-no : Pers-No;
-		   priority : INTEGER;
-		   where : INTEGER;	 )
-	;
-	! Addera angiven person som medlem i angivet m|te
-	! Priority {r prioriteten p} l{slistan
-	! Where {r placering p} listan, 0 (noll) eller st|rre
-	! RPC-anropet nummer 14 anv{nds {ven senare f|r att {ndra
-	! prioritet och plats p} listan.
-
-  30=add-recipient
-	! The sequence "conf-no, type" is a reversed Misc-Info.
-	! Type is recpt or cc_recpt.
-	add-recipient-params : ( text-no : Text-No;
-				 conf-no : Conf-No;
-				 type : INTEGER;    )
-	;
-
-  45=broadcast
-	message : HOLLERITH;
-	;
-	! Ett privilegierat anrop.
-	! Samma effekt kan n}s genom magisk parameter till anrop 53.
-	! En gammal felaktig kommentar g|r g{llande att parametern
-	! skulle vara ett text-no, men s} {r inte fallet.
-
-   3=change-name
-	change-name-params : ( conf-no : Conf-No;
-			       new-name : HOLLERITH; )
-	;
-	! Anropet nummer 3 byter namn p} angivet m|te eller person.
-
-   4=change-what-i-am-doing
-	what-am-i-doing : HOLLERITH;
-	;
-	! Den medskickade texten kommer att visas i vilka-listan,
-	! se {ven anropet nummer 51.
-
-  10=create-conf
-	params : ( name : HOLLERITH;
-		   type : Conf-Type;  )
-	result : Conf-No;
-
-   5=create-person
-	create-person-params : ( name : HOLLERITH;
-				 passwd : HOLLERITH; )
-	Pers-No;
-	! En ny person skapas med angivet namn och l|senord.
-	! Den skapade personens personnummer returneras.
-
-  28=create-text
-	! create-text-return returns text number zero on error
-	! NB! Only Misc-Infos 0,1,2,4 can be sent here.
-	params : ( text : HOLLERITH;
-		   misc-info : ARRAY Misc-Info )
-	result : Text-No;
-
-  11=delete-conf
-	conf : Conf-No;
-	;
-	! Utpl}na ett m|te eller en person.
-
-  29=delete-text
-	Text-No;
-	;
-
-  55=disconnect
-	session-no : Session-No;
-	;
-	! Disconnect a session. You can disconnect your own session
-	! (even if you are not logged in) and any session where you
-	! are supervisor of the user that is logged in on that
-	! session.
-
-  42=enable
-	ena-level : INTEGER;
-	;
-	! This is a privileged call.
-	! Set ena-level. Zero means don't use any privileges.
-
-  50=get-conf-stat
-	conf-no : Conf-No;
-	result : Conference;
-	! Returnera m|tesstatus f|r angivet m|te
-
-  13=get-conf-stat-old
-	params : ( conf-no : Conf-No;
-		   mask : INTEGER;	 )
-	result : Conference
-	! Eftersom den mask som ing}r i params f|ga beaktas,
-	! har anropet nummer 13 ersatts av anropet 50.
-	! M|tesstatusen f|r det angivna m|tet returneras.
-	! Om masken {r ett j{mnt tal, s} skickas ett tomt f{lt (0H)
-	! name i svaret. Fr}n b|rjan var det t{nkt:
-	! mask = name + members + texts + list-sizes -- just use 255
-
-  47=get-created-texts
-	params : ( person : Pers-No;
-		   first : Local-Text-No;
-		   no-of-texts : INTEGER; )
-	created-texts : Text-List;
-	! NB! first is a text number local to the person who wrote it.
-	!     It is not a Local-Text-No in his mailbox.
-
-  34=get-map
-	params : ( conf-no : Conf-No;
-		   first-local-no : Local-Text-No;
-		   no-of-texts : INTEGER; )
-	result : Text-List;
-
-  23=get-marks
-	;
-	Mark-List;
-
-  48=get-members
-	params : ( conf : Conf-No;
-		   first : INTEGER;
-		   no-of-members : INTEGER; )
-	members : Member-List;
-	! first should perhaps be Local-Conf-No...
-
-  46=get-membership
-	params : ( person : Pers-No;
-		   first : INTEGER;
-		   no-of-confs : INTEGER;
-		   mask : BITSTRING (want-read-texts); )
-	memberships : Membership-List;
-	! first should perhaps be Local-Conf-No...
-
-  49=get-person-stat
-	person : Pers-No;
-	result : Person;
-	! Personstatusen f|r den angivna personen returneras.
-
-   6=get-person-stat-old
-	params : ( person : Pers-No;
-		   mask : INTEGER;   )
-	result : Person;
-	! Eftersom den mask som ing}r i params f|ga beaktas,
-	! har anropet nummer 6 ersatts av anropet 49.
-	! Personstatusen f|r den angivna personen returneras.
-	! Om masken {r ett j{mnt tal, s} skickas ett tomt f{lt (0H)
-	! username i svaret.
-
-  36=get-server-info
-	;
-	result : Info;
-	! Return various information about the server.
-	! Anrop 36 hette tidigare get-info med samma semantik.
-
-  54=get-session-info
-	session-no : Session-No;
-	result : Session-Info;
-
-  25=get-text
-	params : ( text : Text-No;
-		   start-char : INTEGER;
-		   end-char : INTEGER;   )
-	result : HOLLERITH;
-
-  26=get-text-stat
-	params : Text-No;
-	result : Text-Stat;
-
-  35=get-time
-	;
-	Time;
-
-  52=get-unread-confs
-	pers-no : Pers-No;
-	conf-no-list : ARRAY Conf-No;
-
-   0=login
-	login-params : ( person : Pers-No;
-			 passwd : HOLLERITH; )
-	;
-
-   1=logout
-	;
-	;
-	! Anropet nummer 1 misslyckas aldrig.
-
-  12=lookup-name
-	name : HOLLERITH;
-	result : Conf-List-Old;
-	! Expandera ett f|rkortat namn och returnera en lista
-	! med nummer p} de m|ten och personer som det kan vara.
-	! Se kommentaren vid definitionen av Conf-List.
-
-  27=mark-as-read
-	params : ( conference : Conf-No;
-		   texts : ARRAY Local-Text-No; )
-	;
-
-  24=mark-text
-	params : ( text : Text-No;
-		   mark-type : INTEGER; )
-	! mark-type = permanently-marked -- just use 255 (?)
-	! The server only stores (does not act upon) this value.
-	;
-
-   2=pepsi
-	Conf-No;
-	;
-	! Anropet nummer 2 anv{nds f|r att g} till det angivna m|tet.
-	! Det engelska namnet {r change conference.
-	! Namnet "Pepsi" h|r till avdelningen mer krystade vitsar.
-
-   9=query-read-texts
-	params : ( pers-no : Pers-No;
-		   conf-no : Conf-No;  )
-	result : Membership;
-	! Man kan fr}ga efter ol{sta utan att logga in.
-
-  53=send-message
-	params : ( recipient : Pers-No;
-		   message : HOLLERITH; )
-	;
-	! Ett privilegierat anrop.
-	! Om mottagaren {r nummer noll, skickas meddlandet till
-	! samtliga inloggade personer. Detta kan ers{tta anrop 45.
-
-  17=set-conf-motd
-	params : ( conf-no : Conf-No;
-		   text-no : Text-No; )
-	;
-	! S{tt lappen text-no p} d|rren till conf-no.
-	! Set-presentation och set-etc-motd trollar dessutom
-	! med f{ltet no-of-marks i textstatusen f|r den gamla
-	! och den nya presentationstexten.
-	! Anrop 17 hette f|rr set-etc-motd med samma semantik.
-
-  21=set-conf-type
-	params : ( conf-no : Conf-No;
-		   type : Conf-Type   )
-	;
-	! M|tet conf-no {r av typen type.
-
-  22=set-garb-nice
-	params : ( conf-no : Conf-No;
-		   nice : Garb-Nice;  )
-	;
-	! Inl{gg i m|tet conf-no sparas i nice dagar innan de raderas.
-
-  41=set-motd-of-lyskom
-	motd : Text-No;
-	;
-	! This is a privileged call.
-	! The text indicated by the parameter is set to be the message
-	! of the day of LysKOM.
-
-   8=set-passwd
-	params : ( person : Pers-No;
-		   old-pwd : HOLLERITH;
-		   new-pwd : HOLLERITH; )
-	;
-	! Ge personen ett nytt l|senord. Old-pwd {r det (gamla)
-	! l|senordet f|r personen som g|r RPC-anropet (inte
-	! n|dv{ndigt samma som anges av f|rsta argumentet).
-
-  19=set-permitted-submitters
-	params : ( conf-no : Conf-No;
-		   perm-sub : Conf-No; )
-	;
-	! M|tet conf-no {r skrivskyddat.
-	! Endast medlemmar i perm-sub f}r skriva inl{gg i conf-no.
-	! Om perm-sub {r 0 (noll) (???) {r m|tet inte skrivskyddat.
-
-  16=set-presentation
-	params : ( conf-no : Conf-No;
-		   text-no : Text-No; )
-	;
-	! [ndra presentationen f|r angivet m|te eller person.
-	! Ange text-no 0 (noll) f|r att ta bort presentationen.
-	! Set-presentation och set-etc-motd trollar dessutom
-	! med f{ltet no-of-marks i textstatusen f|r den gamla
-	! och den nya presentationstexten.
-
-   7=set-priv-bits
-	params : ( person : Pers-No;
-		   privileges : Priv-Bits )
-	;
-	! Ge eller ta n}gra bittar f|r den angivna personen.
-
-  20=set-super-conf
-	params : ( conf-no : Conf-No;
-		   super-conf : Conf-No; )
-	;
-	! G|r super-conf till superm|te (organisat|r?) f|r m|tet
-	! conf-no. Om conf-no {r skrivskyddat, s} skickas eventuella
-	! brev vidare till superm|tet.
-
-  18=set-supervisor
-	params : ( conf-no : Conf-No;
-		   admin : Conf-No; )
-	;
-	! G|r alla medlemmar i m|tet admin till administrat|rer (???)
-	! f|r m|tet conf-no. Admin {r typiskt en persons brevl}da.
-
-  40=set-unread
-	params : ( conference : Conf-No;
-		   no-of-unread : INTEGER; )
-	;
-	! Endast l{sa no-of-unread senaste i angivet m|te.
-
-  57=set-user-area
-	params : ( pers-no : Pers-No;
-		   user-area : Text-No; )
-	;
-	! Angiven text anv{nds f|r att lagra angiven persons
-	! variabler. Hur detta g}r till borde kanske behandlas
-	! i ett separat kapitel.
-
-  44=shutdown
-	exit-val : INTEGER;
-	;
-	! This is a privileged call.
-	! Shutdown server.
-	! An old comment says exit-val is not used by the server.
-	! Samma effekt n}s genom kill -HUP mot servern.
-
-  33=sub-comment
-	params : ( comment : Text-No;
-		   comment-to : Text-No; )
-	;
-
-  38=sub-footnote
-	params : ( footnote : Text-No;
-		   footnote-to : Text-No; )
-	;
-
-  15=sub-member
-	params : ( conf-no : Conf-No;
-		   pers-no : Pers-No; )
-	;
-	! Subtrahera angiven person som medlem i angivet m|te.
-
-  31=sub-recipient
-	params : ( text-no : Text-No;
-		   conf-no : Conf-No; )
-	;
-
-
-  43=sync
-	;
-	;
-	! Make LysKOM sync its files. This is a privileged call.
-	! Samma effekt n}s med kill -SIGUSR1 mot servern.
-
-  56=who-am-i
-	;
-	sesson-no : Session-No;
-
-  39=who-is-on-old
-	;
-	result : Who-Info-List-Old;
-	! Anrop nummer 39 {r ersatt av anrop 51, vars svar ger
-	! mer information.
-
-  51=who-is-on
-	;
-	result : Who-Info-List;
-	! Svaret {r en lista med information om nu aktiva sessioner.
-)
-
-De anrop vars nummer i listan nedan f|ljs av en asterisk (*) {r
-ersatta av modernare verianter i den nuvarande versionen (0.33) av
-Elisp-klienten.
-
-	Nummer	RPC-Anrop	Nummer	RPC-Anrop
-	------------------------------------------------------
-	     0	login		     1	logout
-	     2	pepsi		     3	change-name
-	     4	change-what-i-am-doing
-	     5	create-person	     6*	get-person-stat-old
-	     7	set-priv-bits	     8	set-passwd
-	     9	query-read-texts    10	create-conf
-	    11	delete-conf	    12	lookup-name
-	    13*	get-conf-stat-old   14	add-member
-	    15	sub-member	    16	set-presentation
-	    17	set-conf-motd	    18	set-supervisor
-	    19	set-permitted-submitters
-	    20	set-super-conf	    21	set-conf-type
-	    22	set-garb-nice	    23	get-marks
-	    24	mark-text	    25	get-text
-	    26	get-text-stat	    27	mark-as-read
-	    28	create-text	    29	delete-text
-	    30	add-recipient	    31	sub-recipient
-	    32	add-comment	    33	sub-comment
-	    34	get-map		    35	get-time
-	    36	get-server-info	    37	add-footnote
-	    38	sub-footnote	    39*	who-is-on-old
-	    40	set-unread	    41	set-motd-of-lyskom
-	    42	enable		    43	sync
-	    44	shutdown	    45*	broadcast
-	    46	get-membership	    47	get-created-texts
-	    48	get-members	    49	get-person-stat
-	    50	get-conf-stat	    51	who-is-on
-	    52	get-unread-confs    53	send-message
-	    54	get-session-info    55	disconnect
-	    56	who-am-i	    57  set-user-area
-	------------------------------------------------------
-
-
-			Konstruerade datatyper
-
-H{r definieras de datatyper som sedan anv{nds i RPC-anrop fr}n
-klienten till servern och i asynkrona anrop fr}n servern till
-klienten. Datatyperna listas i bokstavsordning.
-
-
-! Pers-no and Conf-no are u_shorts in the same domain.
-Conf-No ::= INTEGER;
-Conf-No-List ::= ARRAY Conf-No;		! Anv{nds var?
-
-Conf-List ::= ARRAY ( conference : Conf-No;
-		      type : Conf-Type;	    )
-
-! Som svar p} anrop 12 ges Conf-List-Old, som inte kan formuleras
-! med den h{r BNF-grammatiken. Conf-List borde returneras, men d}
-! vore inte LysKOM bak}tkompatibelt.
-! Conf-List-Old:   "3 { 3 45 62 } { 1001 0000 1001 }"
-! Conf-List:	   "3 { 3 1001  45 0000  62 1001 }"
-
-Conf-Type ::= BITSTRING (
-  rd_prot;		! Can anyone become a member?
-  original;		! Comments forbidden?
-  secret;		! Secret mailboxes cannot easily login by name
-  letterbox;		! Mailbox
-)
-
-Conference ::= (
-  name : HOLLERITH;
-  type : Conf-Type;
-  creation-time : Time;
-  last-written : Time;
-  creator : Pers-No;
-  presentation : Text-No;
-  supervisor : Conf-No;
-  permitted-submitters : Conf-No;	! Zero means anybody
-  super-conf : Conf-No;			! Zero means author
-  msg-of-day : Text-No;			! Every conf has one
-  nice : Garb-Nice;
-  no-of-members : INTEGER;
-  first-local-no : Local-Text-No;	! Oldest text still stored
-  no-of-texts : INTEGER;		! How many texts stored
-)
-
-Garb-Nice ::= INTEGER;			! Number of days
-
-Info ::= (
-  version : INTEGER;
-  conf-pres-conf : Conf-No;		! M|tet Pres (nya) m|ten
-  pers-pres-conf : Conf-No;		! M|tet Pres (nya) medlemmar
-  motd-conf : Conf-No;			! M|tet Lappar p} d|rren
-  kom-news-conf : Conf-No;		! M|tet Nyheter om LysKOM
-  motd-of-lyskom : Text-No;		! Visas vid login
-)
-
-! kom-types.h defines Info-Datum as the tail in Misc-Info
-! kom-types.h defines Info-Type as the selector in Misc-Info
-
-Local-Text-No ::= INTEGER;
-
-Mark ::= ( text-no : Text-No; type : INTEGER )
-	! Servern ger sig inte p} att tolka markeringstypen,
-	! det {r helt upp till klienten.
-
-Mark-List ::= ARRAY Mark;
-
-
-Member ::= Pers-No;
-Member-List ::= ARRAY Member;
-Membership ::= (
-  last-time-read : Time;
-  conference : Conf-No;
-  priority : INTEGER;
-  last-text-read : Local-Text-No;
-  read-texts : ARRAY Local-Text-No;
-)
-
-Membership-List ::= ARRAY Membership;
-
-Misc-Info ::= SELECTION (
-  0=recpt	recipient : Conf-No;		! Mottagare
-  1=cc-recpt	cc-recipient : Conf-No;		! Extra kopia
-  2=comm-to	comment-to : Text-No;		! Kommentar till
-  3=comm-in	commented-in: Text-No;		! Kommentar i
-  4=footn-to	footnote-to : Text-No;		! Fotnot till
-  5=footn-in	footnoted-in : Text-No;		! Fotnot i
-  6=loc-no	local-no : Local-Text-No	! Lokalt textnummer
-  7=rec-time	received-at : Time;		! Mottaget tid
-  8=sent-by	sender : Pers-No;		! S{nt av
-  9=sent-at	sent-at : Time;			! S{nt n{r
-! 10=...-recpt	???				! F|r k{nnedom
-)
-
-Pers-List ::= ARRAY Pers-No;
-
-Pers-No ::= Conf-no;
-
-Person ::= (
-  username : HOLLERITH;			! E-mail adress
-  privileges : Priv-Bits;
-  flags : Personal-Flags;
-  last-login : Time;			! Eller logout?
-  user-area : Text-No;
-  total-time-present : INTEGER;		! I sekunder
-  sessions : INTEGER;
-  created-lines : INTEGER;
-  created-bytes : INTEGER;
-  read-texts : INTEGER;
-  no-of-text-fetches : INTEGER;
-  created-persons : INTEGER;
-  created-confs : INTEGER;
-  first-created-local-no : INTEGER;  	! Well, local isn't really true but...
-  no-of-created-texts : INTEGER;     	! Numbers of texts in the ARRAY,
-					! i.e. not erased ones.
-  no-of-marks : INTEGER;
-  no-of-confs : INTEGER;
-)					! /mo
-
-Personal-Flags ::= BITSTRING (
-  unread-is-secret;
-	! V{rdet 1 betyder att antalet ol{sta texter h}lls hemligt
-  flg2; flg3; flg4; flg5; flg6; flg7; flg8;
-)
-
-! Se avsnittet ovan om s{kerhetsniv}er och privilegiebittar.
-Priv-Bits ::= BITSTRING (
-  wheel; admin; statistic; create_pers; create_conf; change_name;
-  flg7; flg8; flg9; flg10; flg11; flg12; flg13; flg14; flg15; flg16;
-)
-
-! Session-Info {r v{ldigt likt Who-Info.
-Session-Info ::= (
-  person : Pers-No;
-  working-conference : Conf-No;
-  session : Session-No;
-  what-am-i-doing : HOLLERITH;
-  username : HOLLERITH;		! user@host
-  idle-time : INTEGER;		! Sekunder sedan senaste anrop
-  connection-time : Time;	! Tid och datum f|r uppkoppling
-				! Detta {r ej detsamma som login-tid
-)
-
-! Session numbers are unique to each session. A person can have
-! more than one session running at the same time. Session numbers
-! are assigned starting from 1 up. Session numbers are not reused
-! during the lifetime of the server. See Who-Info-List
-Session-No ::= INTEGER;
-
-Text-List ::= ( first-local-no : Local-Text-No;
-		texts : ARRAY Text-No;		)
-
-! Text-No is a u_long.
-Text-No ::= INTEGER;
-
-Text-Stat ::= (
-  creation-time : Time;
-  author : Pers-No;
-  no-of-lines : INTEGER;
-  no-of-chars : String-Size;
-  no-of-marks : INTEGER;
-  misc-info : ARRAY Misc-Info;
-)
-
-! UNIX <time.h> struct tm. No time zone.
-Time ::= (
-  seconds : INTEGER;		! 0 ... 59
-  minutes : INTEGER;		! 0 ... 59
-  hours : INTEGER;		! 0 ... 23
-  mday : INTEGER;		! 1 ... 31
-  month : INTEGER;		! jan = 0 ... dec = 11
-  year : INTEGER;		! Sedan 1900
-  weekday : INTEGER;		! s|n = 0 ... SAT = 6
-  yearday : INTEGER;		! 0 ... 365
-  isdst : INTEGER;		! positivt = sommartid, 0 = normaltid
-)
-  
-Who-Info-Old ::= (
-  person : Pers-No;
-  what-am-i-doing : HOLLERITH;
-  working-conference : Conf-No;
-)
-Who-Info-List-Old ::= ARRAY Who-Info-Old;
-
-Who-Info ::= (
-  person : Pers-No;
-  working-conference : Conf-No;
-  session : Session-No;
-  what-am-i-doing : HOLLERITH;
-  username : HOLLERITH;		! user@hostname
-)
-
-Who-Info-List ::= ARRAY Who-Info;
-
-
-
-			       Exempel
-
-Nedan ett exempel fr}n en verklig LysKOM-session. Kommentarer har jag
-gett med "!" som i grammatiken. Exemplet {r gammalt och inneh}ller en
-del detaljer som senare tagits ur bruk, men det ger {nd} en ide om hur
-det r}a protokollet ser ut.
-
-	$ telnet laila 4894
-	Trying 130.236.254.12 ...
-	Connected to laila.lysator.liu.se.
-	Escape character is '^]'.
-	A8Haronsson	 		! Jag k|r protokoll A
-	LysKOM 				! LysKOM svarar
-	1 12 13HLars Aronsson 		! lookup-name
-	=1 2 { 8 38 } { 1001 1001 } 	! Person 8 eller Person 38
-	:3 2 21 7 0H 			! Person 21 gick till m|te 7
-	:1 1 56 			! Person 56 loggade just ut
-	2 0 8 8H******** 		! login Person 8 med password
-	:3 2 8 0 0H 			! Person 8 loggade just in
-	=2 				! login OK
-	3 10 23HAntikommunistiskt Forum 0000 
-					! Jag skapar ett |ppet m|te
-	=3 57 				! OK, m|te 57 skapat
-	4 1 				! Jag loggar ut
-	:1 1 8 				! Person 8 loggade just ut
-	=4 				! logout OK
diff --git a/doc/security-levels.txt b/doc/security-levels.txt
deleted file mode 100644
index a6a530fa7..000000000
--- a/doc/security-levels.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-Skriv hit allt som priviligerade kan g|ra!
-Siffrorna anger vilken enable-level man m}ste vara p} f|r att f} g|ra saken.
-
-(Denna fil kanske inte st{mmer med verkligheten. Tyv{rr. Men om Bellman f}r
- sin vilja igenom (och det har jag inget emot) s} ska det ju {nd} g|ras om.)
-
-wheel
-0	Kan alltid logga in.
-6	Kan s{tta alla Priv_bits f|r alla personer.
-7	Kan s{tta password f|r alla personer.
-8	[r organisat|r (supervisor) f|r allt.
-10	Kan l{sa alla texter.
-
-admin
-2	Kan l{sa status f|r hemliga m|ten/personer.
-2	Kan l{sa de skyddade delarna av statusen.
-2	Kan l{sa hela text_statusen, {ven hemliga mottagare.
-1	Kan l{sa last_login.
-4	Kan addera/subtrahera medlemmar.
-4	Kan addera/subtrahera mottagare till texter.
-5	Kan s{tta superm|te.
-5	Kan radera texter.
-6	Kan s{tta administrat|r.
-3	Kan byta namn p} alla.
-1	Kan st{nga av servern.
-1	Kan s{tta motd_of_kom.
-
-statistic
-2	Kan l{sa statistikdelarna av Person-structen, {ven om de {r skyddade.
-
-create_conf	(default on)
-0	Kan skapa m|ten
-
-create_pers	(default on)
-0	Kan skapa personer
-*********************************************************************
-
-Vilka privilegier vill vi ha?
-
--  L{sa valfria texter
--  Alltid f} logga in
--  L{sa status f|r valfria texter
--  [ndra mottagare f|r valfria texter p} godtyckligt s{tt
--  Flytta texter som man f}r l{sa
--  F}r {ndra div status f|r godtyckliga m|ten
--  F}r {ndra l|senord f|r godtycklig person
--  F}r {ndra div status f|r godtycklig person, dock ej priv-bittar
--  S{tta priv-bittar
--  Skapa personer (default on)
--  Skapa m|ten (default on)
\ No newline at end of file
diff --git a/doc/server-async.extend b/doc/server-async.extend
deleted file mode 100644
index 7b48fa6c7..000000000
--- a/doc/server-async.extend
+++ /dev/null
@@ -1,23 +0,0 @@
-HUR MAN L[GGER TILL ETT ASYNKRONT MEDDELANDE I A-SERVERN
-
-1) L{gg till det i async.h: typedef enum ... Async.
-
-2) prot-a-send-async.[hc]: skriv en funktion som skickar iv{g
-   meddelandet. Gl|m inte att se till att andra argumentet till
-   async_header verkligen {r antalet element som skickas! (Reglerna
-   f|r hur man r{knar ut det {r lite skumma. Se s{rskilt upp med
-   arrayer och structar.)
-
-3) send-async.[hc]: skriv en funktion som skickar iv{g meddelandet
-   till l{mpliga clienter. Vissa meddelanden skickas till n{stan alla
-   klienter. I s} fall ska funktionen loopa |ver alla klienter (se
-   koden f|r exempel). I andra fall skall meddelandet bara till en
-   klient. I de fallen ska funktionen {ven ta en (Isc_clientinfo *)
-   som argument.
-
-4) Se till att skicka meddelandet p} l{mpliga st{llen.
-
-Local Variables:
-mode:indented-swedish
-eval:(auto-fill-mode 1)
-End:
diff --git a/doc/server.extend b/doc/server.extend
deleted file mode 100644
index 690140223..000000000
--- a/doc/server.extend
+++ /dev/null
@@ -1,65 +0,0 @@
-ATT L[GGA TILL EN NY FUNKTION
-
-F|r att l{gga till en ny funktion beh|ver f|ljande {ndringar g|ras:
-(Det ser kanske mycket ut, men i praktiken s} {r det inte s} jobbigt)
-
-  1) Deklarera funktionen i services.h.
-
-  2) Deklarera funktionen i server/fncdef.txt. L{gg alltid nya funktioner
-     sist s} att gamla klienter fortfarande fungerar.
-
-	2a) Om funktionen tar en inparameter av en typ som inte finns
-	    n{mnd i fncdef.txt s} m}ste {ndringar ske i
-
-		server/call-switch.awk
-		server/parse-arg-c.awk
-		server/isc-server.h	Definitionen av Isc_clientinfo ska
-					ut|kas med ett f{lt d{r man kan
-					lagra det parseade f{ltet.
-		server/isc-parse.c	Skriv en funktion f|r att parsea.
-		server/isc-parse.h
-
-	2b) Om funktionen tar f|r m}nga inparametrar av typen num, 
-	    string eller c_string s} m}ste man {ndra
-
-		server/isc-server.h	Definitionen av Isc_clientinfo
-
-	2c) Om funktionen har en utparameter av en annan typ {n de som redan
-	    finns:
-
-	    	server/prot-a.c: L{gg till en rad i switchen i prot_a_reply.
-		server/connections.h: L{gg till typen i Res_type och 
-				      Result_holder.
-		server/prot-a-output.c: skriv en funktion f|r att skriva 
-					ut ett objekt.
-		server/prot-a-output.h
-		
-   3) Skriv funktionen i l{mplig fil i server-direktoryt. De som finns att 
-      v{lja p} n{r detta skrivs {r
-
-        admin.c, conference.c, membership.c, person.c, session.c, text.c
-
-   4) L{gg till funktionsnamnet i prot_a_is_legal_fnc() i server/prot-a.c.
-
-   5) Kompilera om servern med 'make' i server/.
-
-   6) Skapa funktionsstubbar i kommunikationsdelen i filerna
-
-		isc-client/services.c
-		isc-client/input.c	Om nya komplicerade datatyper.
-		isc-client/input.h
-		isc-client/output.c
-		isc-client/output.h
-
-   7) Om du har nya datatyper skall funktioner f|r att parsea/skriva
-      dom definieras i
-		isc-client/isc-parse.c
-		isc-client/isc-parse.h
-		isc-client/isc-output.c
-		isc-client/isc-output.h
-
-  8) Skapa libyskom.a med 'make ar' i isc-client/.
-
-  9) Implementera de nya kommandona i klienterna.
-I protokoll B kommer det (om lacgen n}gonsin blir klart) att bli
-mycket enklare.
diff --git a/doc/skeleton.doc b/doc/skeleton.doc
deleted file mode 100644
index fcd4fa1ab..000000000
--- a/doc/skeleton.doc
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-			   LysKOM-Projektet
-		   --------------------------------
-			 Titel p} dokumentet
-		   --------------------------------
-			   av Nisse Gandhi
-		       <nisgan@lysator.liu.se>
-			     1 april 1990
-
-
-
-H{r b|rjar texten...
diff --git a/foo b/foo
deleted file mode 100644
index e69de29bb..000000000
diff --git a/scripts/Depend.make b/scripts/Depend.make
deleted file mode 100644
index 7f21f9e84..000000000
--- a/scripts/Depend.make
+++ /dev/null
@@ -1,19 +0,0 @@
-depend:
-	${SED} '/^# OBJECTS: @@@* #$$/q' Makefile	> temp-Makefile
-	echo '# This line is generated by "make depend"'>>temp-Makefile
-	echo -n 'OBJECTS = '				>>temp-Makefile
-	ls *.c | ${AWK} 'BEGIN	{	pos = 10;	}		\
-				{	sub(/\.c$$/, ".o");		\
-					pos += length($$0) + 1;		\
-					if (pos >= 75)			\
-					{	printf("\\\n\t");	\
-						pos = 9 + length($$0);	\
-					}				\
-					printf ("%s ", $$0);		\
-				 }'			>>temp-Makefile
-	echo						>>temp-Makefile
-	${SED} '/^# RULES: @@@* #$$/,/^# DEPENDENCIES: @@@* #$$/!d' \
-		Makefile				>>temp-Makefile
-	echo						>>temp-Makefile
-	gcc -M -DCLIENT ${INCLUDES}  *.c		>>temp-Makefile
-	mv temp-Makefile Makefile
diff --git a/scripts/List-Files b/scripts/List-Files
deleted file mode 100755
index 292acbf6a..000000000
--- a/scripts/List-Files
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-#  Lists the differences between the file 'FileList' and what's 
-#  actually in the current directory.
-
-#  Change to the directory specified as first parameter.
-cd ${1-.}
-
-#  Get the names of some temporary files.
-FILE1=/tmp/LysKOM.$$.fl		# The files in 'FileList'
-FILE2=/tmp/LysKOM.$$.ls		# The files in this directory
-
-#  First find out what files are described in 'FileList'.
-egrep '^\*' FileList | sed 's/^\*  //' >$FILE1
-
-#  Find the files in this directory that we are interested in.
-#  Remove trailing *'s, since those are generated by 'ls -F'
-#  Files ending in .o and ~ are not interesting either.
-ls -F  | sed 's/\*$//' | egrep -v '\.o$|~$' | sort -f >$FILE2
-
-#  Then compare that list to the output from 'ls(1)'
-diff $FILE1 $FILE2
-
-#  Clean up
-rm $FILE1 $FILE2
diff --git a/scripts/Makefile b/scripts/Makefile
deleted file mode 100644
index 6da10fa0a..000000000
--- a/scripts/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-TOPDIR = /usr/lyskom
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-all:;
-depend:;
-install:;
-includes:;
-libraries:;
-binaries:;
-	
-
-clean:
-	$(RM) *~ core
diff --git a/scripts/Parallell-depend.make b/scripts/Parallell-depend.make
deleted file mode 100644
index 7d9852186..000000000
--- a/scripts/Parallell-depend.make
+++ /dev/null
@@ -1,26 +0,0 @@
-depend: temp-A-Makefile temp-B-Makefile temp-C-Makefile \
-		temp-D-Makefile temp-E-Makefile
-	rm -f dependencies
-	cat temp-?-Makefile >dependencies
-	rm temp-?-Makefile temp-?-files
-	echo depend ready.
-
-temp-A-Makefile: c-indexes specials
-	-$(CC) -M $(CFLAGS) `cat temp-A-files`     >temp-A-Makefile
-
-temp-B-Makefile: c-indexes specials
-	-$(CC) -M ${CFLAGS} `cat temp-B-files`     >temp-B-Makefile
-
-temp-C-Makefile: c-indexes specials
-	-$(CC) -M ${CFLAGS} `cat temp-C-files`     >temp-C-Makefile
-
-temp-D-Makefile: c-indexes specials
-	-$(CC) -M ${CFLAGS} `cat temp-D-files`     >temp-D-Makefile
-
-temp-E-Makefile: c-indexes specials
-	-$(CC) -M ${CFLAGS} `cat temp-E-files`     >temp-E-Makefile
-
-c-indexes: 
-	ls *.c|${AWK} '{ a[i++] = $$1; }				\
-	   END { for ( j = 0; j < i; j++ )				\
-		   print a[j] > sprintf("temp-%c-files", 65 + j % 5); }
diff --git a/scripts/RCS-depend.make b/scripts/RCS-depend.make
deleted file mode 100644
index 328384275..000000000
--- a/scripts/RCS-depend.make
+++ /dev/null
@@ -1,27 +0,0 @@
-depend: temp-A-Makefile temp-B-Makefile temp-C-Makefile temp-D-Makefile \
-		temp-E-Makefile
-	rcs -l dependencies
-	rm -f dependencies
-	cat temp-?-Makefile				>dependencies
-	rm temp-?-Makefile temp-?-files
-	echo " " | ci dependencies
-
-temp-A-Makefile: c-indexes
-	gcc -M ${TARGET} ${INCLUDES} `cat temp-A-files`	>temp-A-Makefile
-
-temp-B-Makefile: c-indexes
-	gcc -M ${TARGET} ${INCLUDES} `cat temp-B-files`	>temp-B-Makefile
-
-temp-C-Makefile: c-indexes
-	gcc -M ${TARGET} ${INCLUDES} `cat temp-C-files`	>temp-C-Makefile
-
-temp-D-Makefile: c-indexes
-	gcc -M ${TARGET} ${INCLUDES} `cat temp-D-files`	>temp-D-Makefile
-
-temp-E-Makefile: c-indexes
-	gcc -M ${TARGET} ${INCLUDES} `cat temp-E-files`	>temp-E-Makefile
-
-c-indexes: sources
-	echo ${SRCS}|tr " " \\012 |${AWK} '{ a[i++] = $$1; }				\
-	   END { for ( j = 0; j < i; j++ )				\
-		   print a[j] > sprintf("temp-%c-files", 65 + j % 5); }
diff --git a/scripts/Summarize-Headers b/scripts/Summarize-Headers
deleted file mode 100755
index ca5a05c32..000000000
--- a/scripts/Summarize-Headers
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-#  Summarize a .h file
-
-#  Since we write our .h files with documentation in line, they
-#  tend to get rather long, and it gets somewhat difficult to get
-#  a quick overview of what functions are declared in the file.
-#  This script cuts out all the "unnecessary" information.
-
-AWK=gawk
-
-$AWK   '/^[ \t]*#[ \t]*define/ { print $0 ;
-				define = 1 ;
-				next ;
-			}
-	define != 0	{	if (substr($0, length(), 1) == "\\")
-				{
-					printf ("\n") ;
-					next ;
-				}
-				else  {
-					printf ("\n") ;
-					define = 0 ;
-					next ;
-				}
-			}
-	/^\/\*/,/\*\/$/	{	printf ("\n") ;
-				next ;
-			}
-	/\/\//		{	next ;				}
-	(define == 0) &&	\
-  	(comment == 0) 	{	print $0 ;			}
-	/\/\*/		{	comment = 1 ;			}
-	/\*\//		{	comment = 0 ;			}
-'  $1 |
-$AWK   'BEGIN		{	blank_lines = 0;		}
-	$1 == ""	{		if (blank_lines++ == 0)
-					print $0;
-			}
-	$1 != ""	{	print $0;
-				blank_lines = 0;
-			}
-'
diff --git a/scripts/import.make b/scripts/import.make
deleted file mode 100644
index 25420ee59..000000000
--- a/scripts/import.make
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is included by all Makefiles in the LysKOM hierarchy.
-# It gives default values for all variables that is normally used. 
-# TOPDIR and SCRIPTDIR must be set before this file is included.
-# If any of the variables are defined in the environment, that value
-# will override the value that is set here.
-#
-# ceder is guilty.
-#
-
-SHELL=/bin/sh
-AWK = gawk
-SED = /usr/bin/sed
-CC = gcc -ansi
-RM = /usr/gnu/bin/rm -vf
-
-INCLUDEDIR	= $(TOPDIR)/include
-LIBDIR		= $(TOPDIR)/lib
-ANSIDIR		= $(INCLUDEDIR)/ansi
-
-INCLUDES = -I$(ANSIDIR) -I$(INCLUDEDIR)
-OPTIMIZE-FLAGS = -O
-MISC-CFLAGS = -g -Wall
-PIPE = -pipe
-
-# -h flag makes NULL pointer references generate runtime errors
-LDFLAGS = -h -L$(LIBDIR)
-
-CFLAGS =  $(INCLUDES)  $(OPTIMIZE-FLAGS)  $(MISC-CFLAGS) $(PIPE) $(TARGET)
-
-# LysKOM executables that the typical user don't use go here.
-# (The server, dbck, et c)
-
-LYSKOMSYSBIN = /usr/lyskom/bin
-
-# User executables (such as lyskom, kompost et c)
-
-LYSKOMUSRBIN = /usr/local/bin
-
-EXPORTS = CC="${CC}" SHELL="${SHELL}" AWK="${AWK}" SED="${SED}" 	\
-	RM="${RM}" INCLUDEDIR="${INCLUDEDIR}" LIBDIR="${LIBDIR}"	\
-	ANSIDIR="${ANSIDIR}" INCLUDES="${INCLUDES}"			\
-	OPTIMIZE-FLAGS="${OPTIMIZE-FLAGS}"				\
-	MISC-CFLAGS="${MISC-CFLAGS}" PIPE="${PIPE}"			\
-	LDFLAGS="${LDFLAGS}" CFLAGS="${CFLAGS}"				\
-	LYSKOMSYSBIN="${LYSKOMSYSBIN}" LYSKOMUSRBIN="${LYSKOMUSRBIN}"	\
-	TOPDIR="${TOPDIR}" SCRIPTDIR="${SCRIPTDIR}" AR="${AR}" 		\
-	ARFLAGS="${ARFLAGS}"
-
-# The Makefiles also dependes on the variables
-# AR, ARFLAGS
-# that are automatically set by GNU Make.
diff --git a/src/Makefile b/src/Makefile
deleted file mode 100644
index bdeabed4a..000000000
--- a/src/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-# All directories that make should traverse to when doing clean etc.
-
-SUBDIRS = include libraries server komutils clients
-
-all: includes libraries binaries
-
-includes:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes)	\
-	done
-
-
-.PHONY: libraries
-libraries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making libraries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) libraries)	\
-	done
-
-
-binaries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making binaries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) binaries)	\
-	done
-
-
-install:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making install in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) install)	\
-	done
-
-
-depend:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making depend in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) depend)	\
-	done
-
-
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
diff --git a/src/include/Makefile b/src/include/Makefile
deleted file mode 100644
index 87a2e431b..000000000
--- a/src/include/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-TARGET = -DCLIENT
-
-SUBDIRS = ansi server 
-
-INSTALL-HDRS = $(wildcard *.h)
-
-all: includes libraries binaries
-
-libraries:;
-binaries:;
-
-
-.PHONY : includes
-includes:
-	for i in $(INSTALL-HDRS);\
-	do	\
-		cmp $$i $(INCLUDEDIR)/$$i || cp $$i $(INCLUDEDIR)/$$i; \
-	done
-	for i in $(SUBDIRS); \
-	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes); \
-	done
-
-clean:
-	$(RM) *~ core temp-Makefile Distfile *.o
-	for i in $(SUBDIRS); \
-	do	\
-		echo making clean in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) clean); \
-	done
-
-depend:;
\ No newline at end of file
diff --git a/src/include/compiler.h b/src/include/compiler.h
deleted file mode 100644
index ceeb6583d..000000000
--- a/src/include/compiler.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  compiler.h
- *		Defines different macros depending on the compiler to
- *		portably use features of different compilers, like the
- *		'__inline__' keyword in GCC.
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- */
-
-
-#ifndef  SPECIAL_H_ALREADY_INCLUDED__
-#define  SPECIAL_H_ALREADY_INCLUDED__
-
-
-#ifdef __GNUC__
-
-#	define	Inline		__inline__	/* Inline function */
-#	define	Volatile	volatile	/* Function does not return */
-
-#else
-
-#	define	Inline
-#	define	Volatile
-
-#endif
-
-
-#endif  /*  SPECIAL_H_ALREADY_INCLUDED__  */
diff --git a/src/include/config.h b/src/include/config.h
deleted file mode 100644
index 171752e25..000000000
--- a/src/include/config.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- *  config.h
- *
- *  Configuration parameters for compiling.  Contains among other
- *  things all the stupid limits you really want to be without, all the
- *  smart limits that has to be there to make it impossible to crash
- *  the server, and lots of constants and configuration options.
- */
-
-
-#define DEBUG			/* We're still debugging and want traces. */
-
-/*
- * Add some checks that really shouldn't be necessary.
- */
-#define DEFENSIVE_CHECKS
-
-
-/* Collating sequence used. */
-#define DEFAULT_COLLAT_TAB	swedish_collate_tab
-
-
-
-/* The file kom_perror prints to.  */
-/* Yes! This should be stdout. At least during testing and debugging! /ceder */
-
-#define kom_errout	stdout
-
-/*
- * Security options (these must be #defines since they are used inside a
- *		     'const' definition in kom-types.c).
- */
-#define ANYONE_CAN_CREATE_NEW_PERSONS TRUE /* Can a created person */
-					   /* create other persons? */
-#define CREATE_PERSON_BEFORE_LOGIN  TRUE /* Can a person create himself? */
-#define ANYONE_CAN_CREATE_NEW_CONFS TRUE
-#define DEFAULT_CHANGE_NAME	    TRUE /* Everyone is normally allowed */
-					 /* to change their own name. */
-
-/*
- * The following are constants which can not be changed without rewriting
- * some of the code.
- */
-#define PROTOCOL_NUMBER_BASE 10	/* The number base used in all communication
-				 * between server and clients. */
-
-
-/* Where to save things. These are used by ramkomd. */
-
-extern const char *DEFAULT_DBASE_DIR;
-extern const char *DATAFILE_NAME;
-extern const char *BACKUPFILE_NAME;
-extern const char *TEXTFILE_NAME;
-extern const char *STATISTIC_NAME;
-extern const char *PID_NAME;
-extern const char *MEMUSE_NAME;
-
-/* Communications */
-
-extern const char * DEFAULT_CLIENT_SERVICE;
-extern const char * DEFAULT_MUX_SERVICE;
-
-#if 0
-extern const int IN_CLIENT_PORT;	/* Which port does LysKOM listen to? */
-extern const int IN_MUX_PORT;	        /* Which port does LysKOM listen to? */
-#endif
-
-/*
- * The following should always be true:
- * SYNCTIMEOUT <= GARBTIMEOUT <= TIMEOUT
- * Times in milliseconds.
- */
-extern const int TIMEOUT;	/* Timeout to select() when totally idle. */
-extern const int GARBTIMEOUT;	/* Timeout to select() when garbing texts
-				   but not syncing. */
-extern const int SYNCTIMEOUT;	/* Timeout to select() when syncing. */
-
-extern const int GARB_INTERVAL;	/* In minutes. */
-extern const int SYNC_INTERVAL;	/* In minutes. */
-extern const int SYNC_RETRY_INTERVAL;	/* In minutes. */
-
-/* Size of the cache. (only applies to diskomd). */
-
-extern const int CACHE_CONFERENCES;
-extern const int CACHE_PERSONS;
-extern const int CACHE_TEXT_STATS;
-
-/* String limits */
-
-extern const int CONF_NAME_LEN;	/* Conference (and Person) name */
-extern const int PWD_LEN;	/* Password. It is not guaranteed that all
-				   chars are significant. */
-extern const int WHAT_DO_LEN;	/* what_am_i_doing */
-extern const int USERNAME_LEN;	/* Max login-id from clients */
-extern const int TEXT_LEN;	/* Max len of a text. */
-extern const int BROADCAST_LEN;	/* Max len of a broadcast message */
-
-/* Text_stat limits */
-
-extern const int MAX_MARKS_PERSON; /* Max marks per person */
-extern const int MAX_MARKS_TEXT;  /* Max marks per text */
-extern const int MAX_RECIPIENTS;  /* Max recipients/cc_recipients per text */
-extern const int MAX_COMM;	  /* Max number of comments to a text */
-extern const int MAX_FOOT;	  /* Max number of footnotes to a text */
-extern const int MAX_CREA_MISC;   /* Sum of recipients, cc_recipients, comm_to
-				   * and footn_to must not exceed MAX_CREA_MISC
-				   * when the text is created. */
-
-/*
- * Some other limits
- */
-extern const int MAX_NO_OF_CONNECTIONS;	/* the maximum number of persons
-					 * that can use Kom simultaneously */
-extern const int MARK_AS_READ_CHUNK;	/* You can't mark more than this many
-					 * texts as read in one call. */
-
-/*
- * Max number of nested super_confs a message will be forwarded before
- * the server gives up.
- */
-extern const int MAX_SUPER_CONF_LOOP;
-
-
-extern const int DEFAULT_NICE;	/* Number of days a text normally lives. */
-
-/* Max entries in the per-client transmit queue */
-extern const int MAXQUEUEDSIZE;
-
-/* Max entries in the per-client transmit queue to send at any one time */
-extern const int MAXDEQUEUELEN;
-
-/* What is whitespace? */
-extern const unsigned char *WHITESPACE;
diff --git a/src/include/debug.h b/src/include/debug.h
deleted file mode 100644
index 312a3ec96..000000000
--- a/src/include/debug.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "config.h"		/* DEBUG is defined there */
-#ifdef DEBUG
-#define BUG(s)  if (buglevel > 0) printf s ;
-#define VBUG(s) if (buglevel > 1) printf s ;
-#define BUGSTR(str) if (buglevel > 0) s_puts(str)
-#define VBUGSTR(str) if (buglevel > 1) s_puts(str)
-#define BUGDECL extern int buglevel
-#else
-#define BUG(s)
-#define VBUG(s)
-#define BUGSTR(str)
-#define VBUGSTR(str)
-#define BUGDECL
-#endif
diff --git a/src/include/dependencies b/src/include/dependencies
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/include/kom-errno.h b/src/include/kom-errno.h
deleted file mode 100644
index 4588c5dc5..000000000
--- a/src/include/kom-errno.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * kom_errno.h
- *
- * Created by ceder 1990-04-18
- *
- * The values that kom_errno can take.
- */
-
-
-#ifndef  _KOM_ERRNO_ALREADY_INCLUDED__
-#define  _KOM_ERRNO_ALREADY_INCLUDED__
-
-#include <sys/types.h>
-
-
-typedef enum 
-{
-    KOM_NO_ERROR = 0,		/* No error has occured */
-    KOM_NOT_IMPL = 2,		/* Not implemented yet */
-    KOM_OBSOLETE = 3,		/* No longer implemented */
-    KOM_PWD = 4,			/* Wrong/illegal password */
-    KOM_LONG_STR = 5,		/* String too long */
-    KOM_LOGIN = 6,			/* Not logged in. */
-    KOM_LOGIN_DISALLOWED = 7,	/* System is in 'singel-user mode' */
-    KOM_CONF_ZERO = 8,		/* Attempt to use conference number 0. */
-    KOM_UNDEF_CONF = 9,		/* Undefined or secret conference */
-    KOM_UNDEF_PERS = 10,		/* Undefined or secret person */
-    KOM_ACCESS = 11,		 	/* No 'read/write permission' */
-    KOM_PERM = 12,			/* No permission */
-    KOM_NOT_MEMBER = 13,             /* Not member in conf */
-    KOM_NO_SUCH_TEXT = 14,		/* No such global text_no, or no access */
-    KOM_TEXT_ZERO = 15,		/* Can't use text no 0 */
-    KOM_NO_SUCH_LOCAL_TEXT = 16,	/* No such local text_no */
-    KOM_LOCAL_TEXT_ZERO = 17,	/* Can't use local text no 0 */
-    KOM_BAD_NAME = 18,		/* Too short/long or contains illegal chars */
-    KOM_INDEX_OUT_OF_RANGE = 19,	/*  */
-    KOM_CONF_EXISTS = 20,		/* Already exists */
-    KOM_PERS_EXISTS = 21,		/* Already exists */
-    KOM_SECRET_PUBLIC = 22,		/* Cannot be secret and !rd_prot */
-    KOM_LETTER_BOX = 23,		/* Cannot change letter_box flag */
-    KOM_LDB_ERR = 24,		/* Should never happen, unless Willf|r makes
-				 * a mistake. */
-    KOM_ILL_MISC = 25,		/* Illegal misc field.
-				   err_stat holds field no */
-
-    KOM_ILLEGAL_INFO_TYPE = 26,	/* Info_type parameter was illegal. This
-				   means that there is a bug in the client. */
-    KOM_ALREADY_RECIPIENT = 27,	/* Already recipient to this text. */
-    KOM_ALREADY_COMMENT = 28,	/* Already comment to this text. */
-    KOM_ALREADY_FOOTNOTE = 29,	/* Already footnote to this text. */
-    KOM_NOT_RECIPIENT = 30,		/* Not recipient */
-    KOM_NOT_COMMENT = 31,		/* Not comment to this text. */
-    KOM_NOT_FOOTNOTE = 32,		/* Not footnote to this text. */
-    KOM_RECIPIENT_LIMIT = 33,	/* Too many recipients */
-    KOM_COMM_LIMIT = 34,		/* Too many comments */
-    KOM_FOOT_LIMIT = 35,		/* Too many footnotes */
-    KOM_MARK_LIMIT = 36,		/* Too many marks. */
-    KOM_NOT_AUTHOR = 37,		/* Only the author may add footnotes or
-				   delete texts. */
-
-
-    KOM_NO_CONNECT = 38,		/* Can't connect to specified server */
-    KOM_OUT_OF_MEMORY = 39,		/* Couldn't get memory for result */
-    KOM_SERVER_IS_CRAZY = 40,	/* Client can't understand server */
-    KOM_CLIENT_IS_CRAZY = 41,	/* Client thinks that server says it can't
-				 * understand client. */
-    KOM_UNDEF_SESSION = 42,	/* No such session exists. */
-    not_used			/* Det {r jobbigt att flytta kommatecknet hela
-				   tiden... :-) /ceder */
-} Kom_err;
-
-
-extern Kom_err kom_errno;
-
-
-extern u_long err_stat;		/* Additional information about the error */
-
-/*
- * print a short description of the error to stdout
- */
-  
-void
-kom_perror(void);
-
-
-#endif  /* _KOM_ERRNO_ALREADY_INCLUDED__ */
diff --git a/src/include/kom-types.h b/src/include/kom-types.h
deleted file mode 100644
index 9b41a07e7..000000000
--- a/src/include/kom-types.h
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- *  KOM-types.h  --  Types used by both server and client of LysKOM
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- */
-
-
-
-#ifndef  KOM_TYPES_H_ALREADY_INCLUDED__
-
-#define  KOM_TYPES_H_ALREADY_INCLUDED__
-
-#ifndef SERVER
-# ifndef CLIENT
-#  error must define SERVER or CLIENT
-# endif
-#else
-# ifdef CLIENT
-#  error must not define both SERVER and CLIENT
-# endif
-#endif /* !SERVER */
-
-#include <sys/types.h>
-#include <limits.h>
-#include <time.h>
-
-#include <s-string.h>
-#include "misc-types.h"
-
-
-typedef		u_short 	Pers_no;
-typedef		u_short		Conf_no;
-typedef 	u_long		Text_no;
-typedef		u_long		Local_text_no;
-typedef		u_long		Session_no;
-
-#define	MAX_PERS_NO		((Pers_no) USHRT_MAX)
-#define MAX_CONF_NO		((Conf_no) USHRT_MAX)
-#define MAX_TEXT_NO		((Text_no) ULONG_MAX)
-#define	MAX_LOCAL_TEXT_NO	((Local_text_no) ULONG_MAX)
-
-
-
-#ifdef  SERVER
-	#define		PASSWD_LEN	64
-	typedef 	char		Password[PASSWD_LEN];
-	typedef		off_t		Text_index;
-	typedef		time_t		Time;
-#  define NULL_TIME_i	((Time) 0)
-
-#else	/* CLIENT */
-	typedef		struct tm	Time;
-#  define NULL_TIME_i	((Time) { 0 })
-
-#endif
-
-
-
-/*
- * The privilige bits:  says what priviliges a person has.  E g
- *  if he is allowed to read texts he normally shouldn't be allowed
- *  to read. See file doc/security-levels.txt
- */
-typedef	struct {
-	u_int	wheel	: 1;
-	u_int	admin	: 1;
-	u_int	statistic : 1;
-	u_int	create_pers: 1;
-	u_int	create_conf: 1;
-	u_int	change_name: 1;
-	u_int	flg7	: 1;	/* For future use. */
-	u_int	flg8	: 1;
-	u_int	flg9    : 1;
-	u_int	flg10   : 1;
-	u_int	flg11   : 1;
-	u_int	flg12	: 1;
-	u_int	flg13	: 1;
-	u_int	flg14	: 1;
-	u_int	flg15	: 1;
-	u_int	flg16	: 1;
-} Priv_bits;
-
-#ifdef SERVER
-#	define DEFAULT_PRIV_BITS_i	((Priv_bits)		\
-	{	0, 0, 0, ANYONE_CAN_CREATE_NEW_PERSONS,		\
-		ANYONE_CAN_CREATE_NEW_CONFS,			\
-		DEFAULT_CHANGE_NAME, 0, 0, 0, 0, 0,		\
-		0, 0, 0, 0, 0					\
-	})
-#else
-#	define DEFAULT_PRIV_BITS_i	((Priv_bits)		\
-	{	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,		\
-		0, 0, 0, 0, 0					\
-	})
-#endif
-extern  const Priv_bits		DEFAULT_PRIV_BITS;
-
-
-
-/*
- * Flags in the Person struct.
- */
-typedef struct {
-    u_int  unread_is_secret : 1;/* FALSE if everyone is allowed to ask how */
-    				/* many unread texts you have.	*/
-    u_int  flg2	: 1;
-    u_int  flg3	: 1;
-    u_int  flg4	: 1;
-    u_int  flg5	: 1;
-    u_int  flg6	: 1;
-    u_int  flg7	: 1;
-    u_int  flg8	: 1;
-} Personal_flags;
-
-#define DEFAULT_PERSONAL_FLAGS_i	((Personal_flags)		\
-					 { 0, 0, 0, 0, 0, 0, 0, 0 })
-extern const Personal_flags DEFAULT_PERSONAL_FLAGS;
-
-
-
-/* See file doc/misc_items */
-typedef enum {	recpt     = 0,	/* 0 Recipient (conference) */
-		cc_recpt  = 1,	/* 1 Carbon Copy recipient (extra kopia) */
-#if 0
-		..._recpt =10,	/* 10 ...recipient (F|r k{nnedom) */
-/*		    Vad ska det heta p} engelska? */
-/* Please let this be a comment otherwise etags voids this file. */
-#endif
-		comm_to   = 2,	/* 2 Comment to (text) */
-		comm_in   = 3,	/* 3 Commented in (text) */
-		footn_to  = 4,	/* 4 This is a footnote to (text) */
-		footn_in  = 5,	/* 5 Footnote to this text in (text) */
-
-    
-		loc_no    = 6,	/* 6 Sequence number within conference */
-		rec_time  = 7,	/* 7 Received at (time) */
-		sent_by   = 8,	/* 8 Sent by (person) */
-		sent_at   = 9		/* 9 Sent at (time) */
-} Info_type;
-
-typedef	union {
-		Conf_no		recipient;
-		Conf_no		cc_recipient;
-		Local_text_no	local_no;
-		Time		received_at;
-		Text_no		comment_to;
-		Text_no		commented_in;
-		Text_no		footnote_to;
-		Text_no		footnoted_in;
-		Pers_no		sender;
-		Time		sent_at;
-} Info_datum;
-
-
-/*  This struct contains miscellaneous information about a text.  */
-typedef	struct {
-	Info_type	type;
-	Info_datum	datum;
-} Misc_info;
-
-
-/*  Fields of this type is supposed to tell the garbage collector
- *  which texts it should remove first.
- */
-typedef u_long	Garb_nice;
-
-
-/*  Struct for text status  */
-typedef struct {
-	Time		  creation_time;
-#ifdef SERVER
-        long              file_pos; /* Start of the text in the text file. */
-#endif
-	Pers_no		  author;
-	u_short		  no_of_lines;
-	String_size	  no_of_chars;
-	u_short		  no_of_marks;	/* Antal markeringar */
-	u_short		  no_of_misc;	/* Recipients, times, comments, ... */
-	Misc_info	* misc_items;	/* List of miscellaneous info. */
-} Text_stat;
-
-#ifdef SERVER
-#define	EMPTY_TEXT_STAT_i	((Text_stat)				\
-				 {  NULL_TIME_i, 0, 0, 0, 0, 0, 0, NULL  })
-#else
-#define	EMPTY_TEXT_STAT_i	((Text_stat)				\
-				 {  NULL_TIME_i, 0, 0, 0, 0, 0, NULL  })
-#endif
-
-extern const Text_stat EMPTY_TEXT_STAT;
-
-
-
-typedef	struct {
-	u_int		rd_prot	: 1;	/* !(Can anyone become a member?) */
-	u_int		original : 1;	/* Comments forbidden? */
-	u_int		secret : 1;	/* Secret conference? */
-					/* Note: if a letterbox is secret it
-					 * will be very hard for that person
-					 * to log in, since he can't map his
-					 * name to a pers_no. He must either
-					 * know his pers_no, or have another
-					 * identity which is his supervisor.
-					 */
-	u_int		letter_box : 1;	/* Is this a letter box? */
-} Conf_type;
-
-#define	NULL_CONF_TYPE_i	((Conf_type) {  0, 0, 0, 0  })
-extern  const Conf_type	NULL_CONF_TYPE;
-
-
-
-typedef struct {
-	Pers_no		member;
-} Member;
-
-
-
-/* Struct for marks */
-typedef struct {
-	Text_no		text_no;
-	u_char		mark_type;	/* It's up to the clients to decide the
-					   meaning of this field. */
-} Mark;
-
-
-
-/*  Information about a person's membership in a conference  */
-typedef struct {
-	Conf_no		conf_no;
-	u_char		priority;	/* Interrupt priority */
-	Time		last_time_read;	/* Updated every time a text in this
-					   conf. is marked as read.	*/
-	Local_text_no	last_text_read;	/* All texts before and inclusive this
-					   are read	*/
-	u_short		no_of_read;
-	Local_text_no * read_texts;	/* Texts after last_text_read. Sorted
-					   in ascending order */
-} Membership;
-
-#define	EMPTY_MEMBERSHIP_i	((Membership)		\
-			{  0, 0, NULL_TIME_i, 0, 0, NULL  })
-extern  const Membership EMPTY_MEMBERSHIP;
-
-
-
-/* Some structs to handle variable-sized arrays. */
-
-typedef struct {
-	u_short	  no_of_marks;
-	Mark	* marks;		/* Pointer to an array of marks. */
-} Mark_list;
-
-#define	EMPTY_MARK_LIST_i	((Mark_list) {  0, NULL  })
-extern const Mark_list EMPTY_MARK_LIST;
-
-
-typedef struct {
-    u_short no_of_confs;
-    Conf_no  *conf_nos;
-} Conf_no_list;
-
-#define EMPTY_CONF_NO_LIST_i	((Conf_no_list) { 0, NULL  })
-extern const Conf_no_list EMPTY_CONF_NO_LIST;
-   
-
-typedef struct {
-	u_short	  no_of_members;
-	Member	* members;
-} Member_list;
-
-#define EMPTY_MEMBER_LIST_i	((Member_list) {  0, NULL  })
-extern const Member_list EMPTY_MEMBER_LIST;
-
-
-
-typedef  struct {
-	Local_text_no	  first_local_no;
-    	u_long		  no_of_texts;
-	Text_no		* texts;
-}  Text_list;
-
-#define EMPTY_TEXT_LIST_i	((Text_list) {  1, 0, NULL  })
-extern const Text_list	EMPTY_TEXT_LIST;
-
-
-
-/*  A list of conference numbers, also telling if it is a
- *  mailbox (i e a person) or an ordinary conference.	*/
-/* Delete this ugly variant as soon as possible! */
-typedef struct {
-	u_long		  no_of_conf_nos;
-	Conf_no		* conf_nos;
-	Conf_type	* type_of_conf;
-} Conf_list_old;
-/* This is the way it should look! */
-typedef struct {
-	Conf_no   conf_no;
-	Conf_type type;
-} Micro_conf;
-
-typedef struct {
-	u_long       no_of_confs;
-	Micro_conf * confs;
-} Conf_list;
-
-
-#define EMPTY_CONF_LIST_OLD_i	((Conf_list_old) {  0, NULL, NULL  })
-extern const Conf_list_old	EMPTY_CONF_LIST_OLD;
-
-#define EMPTY_CONF_LIST_i	((Conf_list) {  0, NULL  })
-extern const Conf_list		EMPTY_CONF_LIST;
-
-
-/*  A list of person numbers  */
-typedef struct {
-	u_long		  no_of_persons;
-	Pers_no		* persons;
-} Pers_list;
-
-#define EMPTY_PERS_LIST_i	((Pers_list) {  0, NULL  })
-extern  const Pers_list		EMPTY_PERS_LIST;
-
-
-
-typedef struct {
-	u_short	      no_of_confs;
-	Membership  * confs;
-} Membership_list;
-
-#define EMPTY_MEMBERSHIP_LIST_i		((Membership_list) {  0, NULL  })
-extern  const Membership_list		EMPTY_MEMBERSHIP_LIST;
-
-
-
-/* The Info struct */
-typedef struct {
-	long		version;
-	Conf_no		conf_pres_conf; /* Presentation of new confs */
-	Conf_no		pers_pres_conf;	/* Presentation of new persons */
-	Conf_no		motd_conf; 	/* Conf that receive motds */
-	Conf_no		kom_news_conf;  /* News about kom */
-	Text_no		motd_of_lyskom; /* To be displayed after login */
-	/* and maybe more... */
-} Info;
-
-
-
-typedef	struct {
-	Pers_no		creator;
-	Time		creation_time;
-	Text_no		presentation;
-	Conf_no		supervisor;	/* Organisat|r f|r m|tet */
-	Conf_no		permitted_submitters;	/* People who are allowed
-					   to submit texts to this conf. 
-					   0 -> anyone may submit. */
-	Conf_no		super_conf;	/* Send unallowed submissions to
-					   the super_conf. 
-					   0 -> unallowed submissions bounce */
-	Conf_type	type;		/* secret, rd_prot etc */
-	Time		last_written;	/* Time of latest text in this conf. */
-	Text_no		msg_of_day;	/* Message to be displayed when this
-					   conf is referenced by the user. */
-	Garb_nice	nice;		/* How long do texts in this
-					   conf live? */
-	String		name;		/* Name of conference */
-#ifdef CLIENT
-	u_short		no_of_members;
-	Local_text_no	first_local_no;
-	u_long		no_of_texts;
-#else
-	Member_list	members;	/* List of members in conf */
-	Text_list	texts;		/* List of texts */
-#endif
-} Conference;
-
-
-#ifdef CLIENT
-#	define	EMPTY_CONFERENCE_i	((Conference)		\
-	{	0, NULL_TIME_i, 0, 0, 0, 0, NULL_CONF_TYPE_i,	\
-		NULL_TIME_i, 0, 0, EMPTY_STRING_i, 0, 0, 0	\
-	})
-#else	/* SERVER */
-#	define	EMPTY_CONFERENCE_i	((Conference)		\
-	{	0, NULL_TIME_i, 0, 0, 0, 0, NULL_CONF_TYPE_i,	\
-		NULL_TIME_i, 0, 0, EMPTY_STRING_i,		\
-		EMPTY_MEMBER_LIST_i, EMPTY_TEXT_LIST_i		\
-	})
-#endif	/* SERVER */
-extern const Conference	EMPTY_CONFERENCE;
-
-
-#ifdef SERVER
-typedef struct {
-	String		name;		/* Name of conference */
-	Conf_type	type;		/* secret, rd_prot etc */
-	Local_text_no	highest_local_no; /* highest local text no */
-	Garb_nice	nice;	        /* Number of days to live */
-} Small_conf;
-
-#define EMPTY_SMALL_CONF_i ((Small_conf){EMPTY_STRING_i, NULL_CONF_TYPE_i, \
-					     0, 0});
-
-extern const Small_conf EMPTY_SMALL_CONF;
-#endif	
-	
-
-/*  Struct for persons  */
-typedef struct {
-	Text_no		user_area;	/* Misc info the clients might want to
-					   store. 0 = not used. */
-	Priv_bits	privileges;
-	Personal_flags	flags;
-	Time		last_login; 	/* Or logout */
-	u_long		total_time_present; /* Number of seconds. */
-	u_long		sessions;	/* Number of sessions */
-	u_long		created_lines;	/* No. of created lines (statistics) */
-	u_long		created_bytes;	/* No. of created bytes (statistics) */
-	u_long		read_texts;	/* No. of read texts (statistics) */
-	u_long		no_of_text_fetches; /* (statistics) */
-	u_short		created_persons; /* (statistics) */
-	u_short		created_confs;	/* (statistics) */
-	String		username;	/* User-name & hostname */
-#ifdef CLIENT
-	Local_text_no	first_created_text; /* The first text that still
-					     * exists. */
-	u_long		no_of_created_texts;
-	u_short		no_of_marks;	/* This many marked texts */
-	u_short		no_of_confs;	/* Member in this many confs */
-#else	/* SERVER */
-	Text_list	created_texts;
-	Mark_list	marks;		/* List of marked texts */
-	Membership_list conferences;	/* List of conferences the person is
-					 * a member in. */
-	Password	pwd;		/* Encrypted password */
-#endif
-} Person;
-
-#ifdef SERVER
-#	define EMPTY_PERSON_i	((Person)			\
-	{	0, DEFAULT_PRIV_BITS_i,				\
-		DEFAULT_PERSONAL_FLAGS_i, NULL_TIME_i, 0, 0,	\
-		0, 0, 0, 0, 0, 0, EMPTY_STRING_i,		\
-		EMPTY_TEXT_LIST_i, EMPTY_MARK_LIST_i,		\
-		EMPTY_MEMBERSHIP_LIST_i, "\001password"		\
-	})
-#else
-#	define EMPTY_PERSON_i	((Person)			\
-	{	0, DEFAULT_PRIV_BITS_i,				\
-		DEFAULT_PERSONAL_FLAGS_i, NULL_TIME_i, 0, 0,	\
-		0, 0, 0, 0, 0, 0, EMPTY_STRING_i, 0, 0, 0, 0	\
-	})
-#endif
-extern  const Person	EMPTY_PERSON;
-
-
-
-/*
- * This struct is returned from the 'who_is_on' call.
- */
-typedef struct {
-	Pers_no		person;
-	String		what_am_i_doing;
-	Conf_no		working_conference;
-} Who_info_old;
-
-typedef struct {
-	Pers_no		person;
-	String		what_am_i_doing;
-	String		username;           /* Userid and hostname. */
-	Conf_no		working_conference;
-	Session_no	session_no;         /* Serial number of connection. */
-} Who_info;
-
-typedef struct {
-	Pers_no		person;
-	String		what_am_i_doing;
-	String		username;            /* Userid and hostname. */
-	Conf_no		working_conference;
-	Session_no	session;             /* Serial number of connection. */
-	Time		connection_time;     /* Not logintime. */
-	u_long		idle_time; 	     /* Seconds. */
-} Session_info;
-
-#define EMPTY_SESSION_INFO_i	((Session_info) { 0, EMPTY_STRING_i,    \
-						  EMPTY_STRING_i, 0, 0, \
-						  NULL_TIME_i, 0 })
-
-extern const Session_info	EMPTY_SESSION_INFO;
-
-#define	EMPTY_WHO_INFO_OLD_i	((Who_info_old) {  0, EMPTY_STRING_i, 0 })
-
-#define	EMPTY_WHO_INFO_i	((Who_info) {  0, EMPTY_STRING_i, \
-						   EMPTY_STRING_i, 0, 0 })
-
-extern const Who_info_old	EMPTY_WHO_INFO_OLD;
-
-extern const Who_info		EMPTY_WHO_INFO;
-
-
-
-typedef struct {
-	int		  no_of_persons;
-    	Who_info_old	* info;
-} Who_info_list_old;	
-
-#define EMPTY_WHO_INFO_LIST_OLD_i ((Who_info_list_old) {  0, NULL  })
-extern const Who_info_list_old	EMPTY_WHO_INFO_LIST_OLD;
-
-
-typedef struct {
-	int		  no_of_persons;
-    	Who_info	* info;
-} Who_info_list;	
-
-#define EMPTY_WHO_INFO_LIST_i	((Who_info_list) {  0, NULL  })
-extern const Who_info_list	EMPTY_WHO_INFO_LIST;
-
-
-#endif	/*  ifndef  KOM_TYPES_H_ALREADY_INCLUDED__  */
diff --git a/src/include/misc-types.h b/src/include/misc-types.h
deleted file mode 100644
index 87b110ea4..000000000
--- a/src/include/misc-types.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  misc-types.h  --  Miscellaneous types and constants that are useful
- *		      in many places in LysKOM, but are not very LysKOM-
- *		      specific.
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- *
- */
-
-
-#ifndef  _MISC_TYPES_ALREADY_INCLUDED__
-#define  _MISC_TYPES_ALREADY_INCLUDED__
-
-
-typedef	enum { FALSE = 0, TRUE = 1 }	Bool;
-
-typedef enum { OK = 017, FAILURE = 17 }    Success;
-
-#define NO_TIME ((time_t) 0)
-
-#endif  /* _MISC_TYPES_ALREADY_INCLUDED__ */
diff --git a/src/include/server/Makefile b/src/include/server/Makefile
deleted file mode 100644
index 29b539d16..000000000
--- a/src/include/server/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-TARGET = -DCLIENT
-
-INSTALL-HDRS = smalloc.h
-
-all: includes libraries binaries
-
-libraries:;
-binaries:;
-
-.PHONY : includes
-includes:
-	-mkdir $(INCLUDEDIR)/server
-	for i in $(INSTALL-HDRS);\
-	do	\
-		cmp $$i $(INCLUDEDIR)/server/$$i	\
-		|| cp $$i $(INCLUDEDIR)/server/$$i; \
-	done
-
-clean:
-	$(RM) ${OBJECTS} *~ core temp-Makefile Distfile *.o
-
-depend:;
diff --git a/src/include/server/dependencies b/src/include/server/dependencies
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/include/server/smalloc.h b/src/include/server/smalloc.h
deleted file mode 100644
index 155eb678a..000000000
--- a/src/include/server/smalloc.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * smalloc.h
- *
- * Contains memory allocator routines
- *
- */
-
-/*
- * The servers "general" memory handler.
- */
-
-
-#define SMALLOC_MAGIC_ALLOC 0x12FE56A0
-#define SMALLOC_MAGIC_FREE  0xCA348E63
-
-/*
- * "safe" malloc. Handles the case when malloc returns NULL.
- * smalloc cannot fail.
- */
-extern void *
-smalloc(size_t size);
-
-
-extern void
-sfree(void * ptr);	/* it is legal to sfree a NULL pointer */
-
-extern void *
-srealloc(void * ptr, size_t size); /* Never fails. It is legal to
-				      realloc the NULL ptr. */
-
-/*
- * Allocate temporary memory, which is automatically freed after this
- * atomic call.
- */
-void *
-tmp_alloc(u_long size);
-
-/*
- * Free all core which is allocated with tmp_alloc(). This is called from
- * end_of_atomic().
- */
-void
-free_tmp(void);
-
-/*
- * Free all memory used internally in tmp_alloc().
- */
-void
-free_all_tmp(void);
-
-
-/*
- * Write statistics of memory usage.
- */
-
-void
-dump_smalloc_counts(FILE *stat_file);
diff --git a/src/include/services.h b/src/include/services.h
deleted file mode 100644
index e847d03c1..000000000
--- a/src/include/services.h
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- *  services.h  --  All the services the LysKOM server makes available
- *		    for clients.
- *
- *  Requires kom-types.h
- *
- *  Created by ceder 1990-03-23
- */
-
-
-#ifndef  _SERVICES_H_ALREADY_INCLUDED__
-#define  _SERVICES_H_ALREADY_INCLUDED__
-
-
-#if defined (CLIENT)
-#	if defined (SERVER)
-#		error Both CLIENT and SERVER defined!
-#	endif
-#	define	KOM_(function)		kom_ ## function
-#	define	CONST			const
-#elif defined (SERVER)
-#	define	KOM_(function)		function
-#	define	CONST
-#else
-#	error	Neither CLIENT nor SERVER defined!
-#endif
-
-
-
-
-/*
- * Session control
- */
-#ifdef CLIENT
-extern  Success
-KOM_( open_connection (const char	* server ));
-
-extern  void
-KOM_( set_storage_management (malloc_function	new_malloc,
-			      realloc_function	new_realloc,
-			      free_function	new_free));
-
-#endif
-
-
-extern  Success
-KOM_( login (Pers_no		person,
-	     const String	passwd ));
-
-extern  Success
-KOM_( logout (void));	/* can never fail */
-
-/* Change Conference */
-extern  Success
-KOM_( pepsi (Conf_no	conference ));
-
-
-/* Change name of a person or conference. */
-extern  Success
-KOM_( change_name (Conf_no	  conf_no,
-		   const String	  new_name));
-
-extern  Success
-KOM_( change_what_i_am_doing (CONST String  what_am_i_doing ));
-
-
-/* Get info about a session */
-
-extern  Success
-KOM_( get_session_info  (Session_no session_no,
-			 Session_info *result) );
-
-/*
- * Disconnect a session. You can disconnect your own session (even if
- * you are not logged in) and any session where you are supervisor of
- * the user that is logged in on that session.
- */
-extern  Success
-KOM_( disconnect (Session_no session_no));
-
-/*
- * Returns your session number
- */
-extern  Success
-KOM_( who_am_i (Session_no *session_no));
-
-
-/******************************
-*     Person-related calls    *
-******************************/
-
-/*
- *  Create a new person.  Returns 0 if any error occured.
- */
-extern  Pers_no
-KOM_( create_person (const String  name,
-		     const String  passwd ));
-
-
-/* Obsolete call; use get_person_stat instead. */
-extern  Success
-KOM_( get_person_stat_old (Pers_no		  person,
-			   int			  mask,
-			   Person		* result ));
-
-extern  Success
-KOM_( get_person_stat (Pers_no		  person,
-		       Person		* result ));
-
-
-
-extern  Success
-KOM_( get_created_texts (Pers_no	  person,
-			 Local_text_no	  first,
-			 u_long		  no_of_texts,
-			 Text_list	* created_texts ));
-
-extern  Success
-KOM_( get_membership (Pers_no		  person,
-		      u_short		  first,
-		      u_short		  no_of_confs,
-		      Bool		  want_read_texts,
-		      Membership_list	* memberships ));
-
-
-
-extern  Success
-KOM_( set_priv_bits (Pers_no	person,
-		     Priv_bits	privileges ));
-
-
-/*  Set the password of PERSON to NEW_PWD.  OLD_PWD is the password
- *  of the person who does the set.  This is not necessarily the
- *  same as the one who gets it set.	*/
-extern  Success
-KOM_( set_passwd (Pers_no	 person,
-		  const String   old_pwd,
-		  const String   new_pwd ));
-
-
-/* You can query for unread texts without logging in. */
-extern  Success
-KOM_( query_read_texts (Pers_no	     pers_no,
-			Conf_no	     conf_no,
-			Membership * result   ));
-
-
-extern Success
-KOM_( get_unread_confs(Pers_no       pers_no,
-		       Conf_no_list *result));
-
-extern Success
-KOM_( set_user_area(Pers_no	pers_no,
-		    Text_no	user_area));
-
-
-/****************************************
-*	Conference-related calls	*
-****************************************/
-
-
-extern  Conf_no
-KOM_( create_conf (const String	  name,
-		   Conf_type	  type ));
-
-
-/*  Delete a conference.  Also used to delete persons.  */
-extern  Success
-KOM_( delete_conf (Conf_no	conf ));
-
-
-/*
- *  Map conference name to number.  Returns a list of the conferences
- *  that match the name NAME. Can be done without logging in.
- */
-#ifdef SERVER
-extern  Success
-KOM_( lookup_name (const String	 name,
-		   Conf_list_old *result));
-#else
-extern  Success
-KOM_( lookup_name (const String	 name,
-		   Conf_list	*result));
-#endif
-
-extern  Success
-KOM_( get_conf_stat_old (Conf_no	conf_no,
-			 int		mask,
-			 Conference   * result ));
-
-extern  Success
-KOM_( get_conf_stat (Conf_no		  conf_no,
-		     Conference		* result ));
-
-extern  Success
-KOM_( get_members (Conf_no	  conf,
-		   u_short	  first,
-		   u_short	  no_of_members,
-		   Member_list	* members	));
-
-
-
-/* add_member is also used to change the priority of a conference */
-extern  Success
-KOM_( add_member (Conf_no	conf_no,
-		  Pers_no	pers_no,
-		  u_char	priority,
-		  u_short	where	)); /* Range of where is [0..] */
-
-
-extern  Success
-KOM_( sub_member (Conf_no	conf_no,
-		  Pers_no	pers_no ));
-
-
-/*
- * Tell the server that I want to mark/unmark texts as read so that I
- * get no_of_unread unread texts in conf_no.
- */
-extern  Success
-KOM_( set_unread (Conf_no   conf_no,
-		  Text_no   no_of_unread));
-
-/*
- * set_presentation and set_etc_motd also does some magic with the
- * no_of_marks field in the Text_stat structure of the old and new text.
- */ 
-
-extern  Success
-KOM_( set_presentation (Conf_no   conf_no,
-			Text_no   text_no )); /* 0 to delete pres. */
-
-extern  Success
-KOM_( set_etc_motd (Conf_no	  conf_no,
-		    Text_no	  text_no ));
-
-
-extern  Success
-KOM_( set_supervisor (Conf_no	  conf_no,
-		      Conf_no	  admin	));
-
-extern  Success
-KOM_( set_permitted_submitters (Conf_no	  conf_no,
-				Conf_no	  perm_sub ));
-
-extern  Success
-KOM_( set_super_conf (Conf_no	  conf_no,
-		      Conf_no	  super_conf ));
-
-extern  Success
-KOM_( set_conf_type (Conf_no	  conf_no,
-		     Conf_type	  type	));
-
-extern  Success
-KOM_( set_garb_nice (Conf_no	  conf_no,
-		     Garb_nice	  nice	)); /* number of days */
-
-
-
-/********************************
-*     Calls to handle marks     *
-********************************/
-
-
-extern  Success
-KOM_( get_marks (Mark_list *result ));
-
-
-
-/*
- *  Will fail if the user is not allowed to read the text.
- */
-extern  Success
-KOM_( mark_text (Text_no	  text,
-		 u_char		  mark_type ));
-
-
-
-
-/*******************************
-*     Calls to handle texts    *
-*******************************/
-
-
-extern  Success
-KOM_( get_text (Text_no	 	  text,
-		String_size	  start_char,
-		String_size	  end_char,
-		String		* result));
-
-
-extern  Success
-KOM_( get_text_stat (Text_no    text,
-		     Text_stat *result));
-
-extern  Success
-KOM_( mark_as_read (Conf_no		    conference,
-		    int			    no_of_texts,
-		    const Local_text_no	  * text_arr   ));
-
-
-/* Returns 0 on error */
-extern  Text_no
-KOM_( create_text (CONST String		  message,
-		   u_short		  no_of_misc,
-		   CONST Misc_info	* misc	     ));
-
-extern Success
-KOM_( delete_text( Text_no text_no ));
-
-
-
-extern  Success
-KOM_( add_recipient (Text_no	  text_no,
-		     Conf_no	  conf_no,
-		     Info_type	  type	)); /* recpt or cc_recpt */
-
-extern  Success
-KOM_( sub_recipient (Text_no	  text_no,
-		     Conf_no	  conf_no ));
-
-
-extern  Success
-KOM_( add_comment (Text_no	  comment,
-		   Text_no 	  comment_to ));
-
-
-/*
- *  Make the text COMMENT to not be a comment to text COMMENT_TO
- */
-extern  Success
-KOM_( sub_comment (Text_no	  comment,
-		   Text_no	  comment_to ));
-
-extern Success
-KOM_( add_footnote (Text_no	footnote,
-		    Text_no 	footnote_to ));
-
-extern Success
-KOM_( sub_footnote (Text_no	footnote,
-		    Text_no	parent ));
-
-extern  Success
-KOM_( get_map (Conf_no		  conf_no,
-	       Local_text_no	  first_local_no,
-	       u_long		  no_of_texts,
-	       Text_list	* result));
-
-
-/*
- *  Ask what the server thinks the time is. This
- *  might differ if on two different machines.
- */
-#ifdef SERVER
-extern  Success
-KOM_( get_time (time_t *time));
-#else				/* CLIENT */
-extern  Success
-KOM_( get_time (struct tm *clock));
-#endif
-
-
-/*
- * Who is logged on now?
- */
-extern  Success
-KOM_( who_is_on_old (Who_info_list_old	* result ));
-
-extern  Success
-KOM_( who_is_on (Who_info_list	* result ));
-
-
-/*
- *  Return various information about the server
- */
-extern  Success
-KOM_( get_info (Info *result ));
-
-/*
- *  Wait for asynchronous message from client, or input on any of
- *  the file-descriptors in opt_set. Returns FAILURE if nothing
- *  happened in msec milliseconds or an error occurs. (kom_errno ==
- *  KOM_NO_ERR if the return was due to a timeout). Returns OK if
- *  there was an asynchronous message or input on any of the fd's in
- *  opt_set.
- *
- *  Set opt_set to NULL if you don't want to wait on any other input
- *  than a message.
- *
- *  To wait for a message or input on stdin the following code can be used:
- *
- *  fd_set read_set;
- *
- *  FD_ZERO(&read_set);
- *  FD_SET(fileno(stdin), &read_set);
- *  if ( kom_wait(read_set, 1000) == OK )
- *  {
- *	if ( FD_ISSET(fileno(stdin), &read_set) )
- *	    handle_stdin_input();
- *	else
- *	    handle_asynchronous_message();
- *  }
- *  else
- *	time_out();
- *
- *  (The handler is called from kom_wait and not handle_asynchronous_message,
- *   but there might be more to do afterwards since a handler cannot call
- *   functions that communicate with the server.)
- */
-#ifdef CLIENT
-extern  Success
-KOM_( wait (fd_set *opt_set,
-	    int     msec));
-#endif
-
-/*
- * Privileged calls.
- */
-
-extern Success
-KOM_( set_motd_of_lyskom (Text_no motd));
-
-/*
- * Set ena_level. 0 means don't use any privileges.
- */
-extern Success
-KOM_( enable (u_char ena_level));
-
-/*
- * Make LysKOM sync its files.
- */
-extern Success
-KOM_( sync (void) );
-
-/*
- * Close LysKOM.
- */
-extern Success
-KOM_( shutdown (int exit_val) );
-
-/*
- * Send a message to all clients. This is obsoleted by send_message()
- * and will soon go away.
- */
-extern Success
-KOM_( broadcast (const String message) );
-
-/*
- * Send a message to a person, or all persons. If recipient == 0 all
- * connections will receive the message.
- */
-extern Success
-KOM_( send_message (Pers_no recipient,
-		    const String message) );
-
-
-/*
- * Asynchronous messages.
- */
-#ifdef CLIENT
-void
-register_new_text(void (*async_new_text)(Text_no    text_no, 
-					 Text_stat  text_s));
-
-void
-register_i_am_on(void (*async_i_am_on)(Who_info info));
-
-void
-register_i_am_off (void (*async_i_am_off)(Pers_no pers_no));
-
-void
-register_new_name(void (*async_new_name)(Conf_no  conf_no,
-					 String   old_name,
-					 String   new_name));
-#endif	/* CLIENT */
-    
-#endif	/*  _SERVICES_H_ALREADY_INCLUDED__  */
diff --git a/src/libraries/Makefile b/src/libraries/Makefile
deleted file mode 100644
index 3cc5db29f..000000000
--- a/src/libraries/Makefile
+++ /dev/null
@@ -1,56 +0,0 @@
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-# All directories that make should traverse to when doing clean etc.
-# Note that client-support depends on libmisc.
-
-SUBDIRS = libansi libmisc libisc libcommon client-support
-
-all: includes libraries binaries
-
-
-includes:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making includes in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) includes)	\
-	done
-
-
-libraries:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making libraries in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) libraries)	\
-	done
-
-
-binaries:;
-
-
-depend:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making depend in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) depend);	\
-	done
-
-
-install:
-	for i in $(SUBDIRS) ;	\
-	do	\
-		echo making install in directory $$i; \
-		(cd $$i; $(MAKE) $(EXPORTS) install)	\
-	done
-
-
-clean:
-	$(RM) *~ core
-	for i in $(SUBDIRS); \
-	do \
-	   echo making clean in directory $$i; \
-	   (cd $$i; $(MAKE) $(EXPORTS) clean) \
-	done
-		
diff --git a/src/libraries/libansi/Makefile b/src/libraries/libansi/Makefile
deleted file mode 100644
index db1a7b19c..000000000
--- a/src/libraries/libansi/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-TARGET = -DCLIENT
-
-LIBNAME = libansi.a
-
-LIBOBJS = strerror.o
-
-all:	$(LIBNAME)
-
-libmisc.a: $(LIBOBJS)
-	$(AR) $(ARFLAGS) $(LIBNAME) $?
-	ranlib $(LIBNAME)
-
-includes:;
-
-libraries: $(LIBNAME)
-	$(RM) $(LIBDIR)/$(LIBNAME)
-	cp $(LIBNAME) $(LIBDIR)/$(LIBNAME)
-	ranlib $(LIBDIR)/$(LIBNAME)
-
-binaries:;
-
-clean:
-	$(RM) ${LIBOBJS} *~ core temp-Makefile Distfile *.o
-
-
-# Recreate the Makefile
-include $(SCRIPTDIR)/Parallell-depend.make
-
-
-tags:
-	etags -t *.[hc]	
-
-specials:;
-
-include dependencies
diff --git a/src/libraries/libansi/README b/src/libraries/libansi/README
deleted file mode 100644
index e721d6dd8..000000000
--- a/src/libraries/libansi/README
+++ /dev/null
@@ -1,5 +0,0 @@
-Detta {r t{nkt att bli ett bibliotek med divers rutiner som beh|vs
-f|r de stackare utan ANSI bibliotek.. (Alla n{stan).
-
-/pen
-
diff --git a/src/libraries/libansi/config.h b/src/libraries/libansi/config.h
deleted file mode 100644
index 9fe0eaccb..000000000
--- a/src/libraries/libansi/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
-** config.h
-**
-** System: SunOS 4.1.1
-*/
-
-
-/* #define HAVE_STRERROR /* */
diff --git a/src/libraries/libansi/dependencies b/src/libraries/libansi/dependencies
deleted file mode 100644
index 00b32730b..000000000
--- a/src/libraries/libansi/dependencies
+++ /dev/null
@@ -1 +0,0 @@
-strerror.o : strerror.c config.h 
diff --git a/src/libraries/libansi/libansi.a b/src/libraries/libansi/libansi.a
deleted file mode 100644
index da20a4f3e62e290cd2381b772fd4d11db21625e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1280
zcmY$iNi0gvu;VH&DM~FW$}iH(R{#Sub8`a&LsKIQ1qB5|BSQrR1!Gf?grR|fnVA__
z%m~C+P)OinWM*V%U|`5#fB*>w2F4{2CPNE|b_E%%pqc_=&wadq!jx$Y3~UVy?2HTy
z49pA+3>O#@7#bEeaIiHnaDl`G85kHQ2q`cKGcYhXFfcGo5=vk&WME(rXkcL5Af~_o
zlb@`$fawDh183v$2ONzrK&CUuFfg!mfLRO-3JeS^-B7jx0|N&K)Qu(#3>@50wgm$N
z3rHNK%!Yx1sqO#&|3@I!vVhcp#9ff|`XK2IU|?W|*%iXTzznmCg$1Mwf`y=lgTh7<
z<Tr>ggAx*3ABk<r3Q@qrz`)=P4loGcuK_}X$O0sG6B2tR68jJm`vDUBAA-#&fyA~#
zV#gw}tB}~!kk~7b*t?O~ml13R1{VefkUu~e#O4P@A;<$R4B#j<fU<=cz)Hb{C<6mS
z090Izfq@}`fr0V93P=EK7UO$RdSGB+;9_84{H6gB2Zb%e0SH?FL_yhL^B;f&pk_kZ
z2@DKOJn6~F@yYqQ1(`XiDS8a?Nu_Ce1`P4V1x1;8C20)t#g)bJsYOLOnZ+d#PF`wJ
z5kovImoUH>ddUo#c_mgQhPFk9*1AT9Cgvs<#%3lK)^Mh|HA8YnVv$vek!_KYwSl#v
zk-0TPPJUjx0$8IlK8>Y$#hK}OsVNYpCLpB-*1CpJ{iw302-)I{{Gt+w9y5@ruCbB1
znT0iogxQU7fH_D7#8ikrRAVh5(q^Wn#->nv!Fo|uSwd8SoCb9<#LtEXAPHSVBMXSX
z;kuyG;9xVbHZnD}W=PA)PXvXe5lD-PwShH5N`7flPO4RjAvlmMKtf=<;o{&B0gIRA
zXQo({7@FD|n!@A8%FWQsR?CPXH80;Pz>p!SG|ei^(A+k$$Pg3_mexiLix)2j0Npg}
Av;Y7A

diff --git a/src/libraries/libansi/strerror.c b/src/libraries/libansi/strerror.c
deleted file mode 100644
index dfbc8776f..000000000
--- a/src/libraries/libansi/strerror.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-** strerror.c
-*/
-#include "config.h"
-
-#ifndef HAVE_STRERROR
-
-extern int sys_nerr;
-extern char *sys_errlist[];
-
-char *strerror(int eno)
-{
-  static char buf[20];
-
-  if (eno < 0 || eno >= sys_nerr)
-  {
-    sprintf(buf, "Error %d", eno);
-    return buf;
-  }
-  else
-    return sys_errlist[eno];
-}
-#endif
diff --git a/src/libraries/libcommon/ChangeLog b/src/libraries/libcommon/ChangeLog
deleted file mode 100644
index f17c43a93..000000000
--- a/src/libraries/libcommon/ChangeLog
+++ /dev/null
@@ -1,15 +0,0 @@
-Sat Jul  6 06:15:40 1991  Per Cederqvist  (ceder at lysator)
-
-	* Fixade makefilen s} att den kan generera b}de liblyskom-server.a
-	  och liblyskom-client.a. (Den ena kompilerad med SERVER
-	  definierad, den andra med CLIENT definierad). "make depend"
-	  kr{ver i nul{get manuella efterjusteringar.
-
-	* misc-parser.h: "time_t" bytt mot "Time" (som {r "struct tm" i
-	  klienten och "time_t" i servern).
-
-	* [ndrade "typedef struct {...} Matching_info" till "typedef
-	  struct matching_info {...} Matching_info".
-
-	* parser.h: s-collat-tables.h -> s-collat-tabs.h.
-
diff --git a/src/libraries/libcommon/Makefile b/src/libraries/libcommon/Makefile
deleted file mode 100644
index b859ee5ba..000000000
--- a/src/libraries/libcommon/Makefile
+++ /dev/null
@@ -1,71 +0,0 @@
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-TARGET = -DCLIENT
-
-
-LIBOBJS = kom-errno.o misc-parser.o parser.o
-HDRS = misc-parser.h parser.h
-LIBRARIES = liblyskom-server.a liblyskom-client.a
-
-all: $(LIBRARIES)
-
-client-dir:
-	mkdir client-dir
-	ln -s `echo $(LIBOBJS) $(HDRS) dependencies| tr ' ' '\012' | \
-	sed 's/.o$$/.c/' | sed 's:^:\.\./:' ` client-dir/
-
-server-dir:
-	mkdir server-dir
-	ln -s `echo $(LIBOBJS) $(HDRS) dependencies| tr ' ' '\012' | \
-	sed 's/.o$$/.c/' | sed 's:^:\.\./:' ` server-dir/
-
-.PHONY: liblyskom-server.a
-liblyskom-server.a: server-dir
-	(cd server-dir; make $(EXPORTS) -f ../Makefile ../$@ TARGET=-DSERVER)
-	ranlib $@
-
-
-../liblyskom-server.a: $(LIBOBJS) 
-	$(AR) $(ARFLAGS) $@ $?
-
-.PHONY: liblyskom-client.a
-liblyskom-client.a: client-dir
-	(cd client-dir; make $(EXPORTS) -f ../Makefile ../$@ TARGET=-DCLIENT)
-	ranlib $@
-
-
-../liblyskom-client.a: $(LIBOBJS) 
-	$(AR) $(ARFLAGS) $@ $?
-
-
-clean:
-	$(RM) -r *.o core Distfile *~ client-dir server-dir $(LIBRARIES)
-
-libraries: includes all 
-	(cd $(LIBDIR); $(RM)  $(LIBRARIES))
-	cp $(LIBRARIES) $(LIBDIR)
-	(cd $(LIBDIR); ranlib -t $(LIBRARIES))
-
-.PHONY: includes
-includes:
-	for i in $(HDRS);\
-	do	\
-		cmp $$i $(INCLUDEDIR)/$$i || cp $$i $(INCLUDEDIR)/$$i; \
-	done
-
-
-binaries:;
-
-tags:
-	etags -t $(INCLUDEDIR)/*.h *.[hc]	
-
-# Recreate the Makefile from Makefile
-
-include $(SCRIPTDIR)/Parallell-depend.make
-
-specials:;
-
-include dependencies
diff --git a/src/libraries/libcommon/README b/src/libraries/libcommon/README
deleted file mode 100644
index 3f695f0c4..000000000
--- a/src/libraries/libcommon/README
+++ /dev/null
@@ -1,2 +0,0 @@
-All utveckling i detta bibliotek sker p} LLL.
-H{r ligger saker som anv{nds b}de i servern och tty-klienten.
diff --git a/src/libraries/libcommon/dependencies b/src/libraries/libcommon/dependencies
deleted file mode 100644
index dc0646a6b..000000000
--- a/src/libraries/libcommon/dependencies
+++ /dev/null
@@ -1,26 +0,0 @@
-kom-errno.o : kom-errno.c /users/ceder/lyskom/include/ansi/stdio.h \
-  /users/ceder/lyskom/include/config.h \
-  /users/ceder/lyskom/include/kom-errno.h \
-  /users/ceder/lyskom/include/ansi/sys/types.h /usr/include/sys/types.h \
-  /usr/gnu/lib/gcc-include/sys/stdtypes.h /usr/include/sys/stdtypes.h \
-  /usr/include/sys/sysmacros.h 
-misc-parser.o : misc-parser.c misc-parser.h \
-  /users/ceder/lyskom/include/kom-types.h \
-  /users/ceder/lyskom/include/ansi/sys/types.h /usr/include/sys/types.h \
-  /usr/gnu/lib/gcc-include/sys/stdtypes.h /usr/include/sys/stdtypes.h \
-  /usr/include/sys/sysmacros.h /usr/gnu/lib/gcc-include/limits.h \
-  /users/ceder/lyskom/include/ansi/time.h /usr/include/time.h \
-  /users/ceder/lyskom/include/s-string.h \
-  /users/ceder/lyskom/include/ansi/stdio.h \
-  /users/ceder/lyskom/include/ansi/stddef.h \
-  /users/ceder/lyskom/include/misc-types.h \
-  /users/ceder/lyskom/include/s-collat-tabs.h 
-parser.o : parser.c /users/ceder/lyskom/include/ansi/stddef.h \
-  /users/ceder/lyskom/include/ansi/sys/types.h /usr/include/sys/types.h \
-  /usr/gnu/lib/gcc-include/sys/stdtypes.h /usr/include/sys/stdtypes.h \
-  /usr/include/sys/sysmacros.h /users/ceder/lyskom/include/s-string.h \
-  /usr/gnu/lib/gcc-include/limits.h /users/ceder/lyskom/include/ansi/stdio.h \
-  /users/ceder/lyskom/include/misc-types.h \
-  /users/ceder/lyskom/include/s-collat-tabs.h parser.h \
-  /users/ceder/lyskom/include/zmalloc.h \
-  /users/ceder/lyskom/include/compiler.h 
diff --git a/src/libraries/libcommon/kom-errno.c b/src/libraries/libcommon/kom-errno.c
deleted file mode 100644
index 16d9a2954..000000000
--- a/src/libraries/libcommon/kom-errno.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * kom_errno.c
- *
- * Created by ceder 1990-05-13
- *
- */
-
-
-#include <stdio.h>
-
-#include <config.h>
-
-#include <kom-errno.h>
-
-
-Kom_err	kom_errno;
-
-/* Additional information about the error */
-u_long 	err_stat;
-
-/* Note that kom_errout is defined in config.h */
-
-void
-kom_perror(void)
-{
-    switch (kom_errno)
-    {
-    case  KOM_NO_ERROR:
-	fprintf (kom_errout, "Why am I called? There was no error!\n");
-	break;
-
-    case KOM_NOT_IMPL:
-	fprintf(kom_errout, "Not implemented yet\n");
-	break;
-	
-    case KOM_PWD:
-	fprintf(kom_errout, "Wrong/illegal password\n");
-	break;
-	
-    case KOM_LOGIN:
-	fprintf(kom_errout, "Not logged in.\n");
-	break;
-	
-    case KOM_LOGIN_DISALLOWED:
-	fprintf(kom_errout, "System is in 'singel-user mode'\n");
-	break;
-	
-    case KOM_CONF_ZERO:
-	fprintf(kom_errout, "Attempt to use conference number 0.\n");
-	break;
-	
-    case KOM_UNDEF_CONF:
-	fprintf(kom_errout, "Undefined or secret conference\n");
-	break;
-	
-    case KOM_UNDEF_PERS:
-	fprintf(kom_errout, "Undefined or secret person\n");
-	break;
-	
-    case KOM_ACCESS:
-	fprintf(kom_errout, "No 'read/write permission'\n");
-	break;
-
-    case KOM_SECRET_PUBLIC:
-	fprintf(kom_errout, "Cannot be secret and !rd_prot\n");
-	break;
-
-    case KOM_LETTER_BOX:
-	fprintf(kom_errout, "Cannot change letter_box flag\n");
-	break;
-
-    case KOM_PERM:
-	fprintf(kom_errout, "No permission\n");
-	break;
-	
-    case KOM_NOT_MEMBER:
-	fprintf(kom_errout, "Not member in conf\n");
-	break;
-
-    case KOM_NO_SUCH_TEXT:
-	fprintf(kom_errout, "No such global text as %ld or no access\n",
-			    err_stat);
-	break;
-	
-    case KOM_NO_SUCH_LOCAL_TEXT:
-	fprintf(kom_errout, "No such local text as %ld\n", err_stat);
-	break;
-
-    case KOM_INDEX_OUT_OF_RANGE:
-	fprintf(kom_errout, "Index out of range\n");
-	break;
-	
-    case KOM_BAD_NAME:
-	fprintf(kom_errout, "To short/long or contains illegal chars\n");
-	break;
-	
-    case KOM_CONF_EXISTS:
-	fprintf(kom_errout, "Already exists\n");
-	break;
-	
-    case KOM_PERS_EXISTS:
-	fprintf(kom_errout, "Already exists\n");
-	break;
-	
-    case KOM_LDB_ERR:
-	fprintf(kom_errout, "LDB_err\n");
-	break;
-	
-    case KOM_ILL_MISC:
-	fprintf(kom_errout, "Illegal misc field at %ld.\n", err_stat);
-	break;
-	
-    case KOM_ILLEGAL_INFO_TYPE:
-	fprintf(kom_errout, "Info_type parameter illegal. Client is buggy.\n");
-	break;
-	
-    case KOM_ALREADY_RECIPIENT:
-	fprintf(kom_errout, "Already recipient to this text.\n");
-	break;
-
-    case KOM_NOT_RECIPIENT:
-	fprintf(kom_errout, "Not recipient.\n");
-	break;
-	
-    case KOM_RECIPIENT_LIMIT:
-	fprintf(kom_errout, "Too many recipients.\n");
-	break;
-	
-    case KOM_COMM_LIMIT:
-	fprintf(kom_errout, "Too many comments.\n");
-	break;
-	
-    case KOM_FOOT_LIMIT:
-	fprintf(kom_errout, "Too many footnotes.\n");
-	break;
-	
-    case KOM_NOT_AUTHOR:
-	fprintf(kom_errout, "Only the author may add footnotes.\n");
-	break;
-
-    case  KOM_OBSOLETE:
-	fprintf (kom_errout, "Servern {r inte kompatibel med mig.\n");
-	break;
-
-    case  KOM_LONG_STR:
-	fprintf (kom_errout, "F|r l}ng str{ng.\n");
-	break;
-
-    case  KOM_NO_CONNECT:
-	fprintf (kom_errout, "Kan ej f} kontakt med servern.\n");
-	break;
-
-    case  KOM_OUT_OF_MEMORY:
-	fprintf (kom_errout, "Dumma Emacs! Fattar du inte att du inte ska "
-		 "bryta en\nrad inuti en str{ng bara f|r att man anv{nder "
-		 "} och {???\n");
-	break;
-
-    case  KOM_SERVER_IS_CRAZY:
-	fprintf (kom_errout, "Hmm, jag tror servern har b|rjat tala i "
-		 "tungom}l...\n");
-	break;
-
-    case  KOM_CLIENT_IS_CRAZY:
-	fprintf (kom_errout, "Hoppschan. Jag har vischt b|rjat schluddra.\n");
-	break;
-	
-#ifndef COMPILE_CHECKS
-    default:
-	fprintf(kom_errout, "Unknown error %d\n", kom_errno);
-	break;
-#endif
-    }
-}
-
diff --git a/src/libraries/libcommon/misc-parser.c b/src/libraries/libcommon/misc-parser.c
deleted file mode 100644
index e32561b50..000000000
--- a/src/libraries/libcommon/misc-parser.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- *  misc-parser.c
- *		Parse a list of misc-items for LysKOM texts.
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- *
- *
- *  Any opinions expressed in this code are the author's PERSONAL opinions,
- *  and does NOT, repeat NOT, represent any official standpoint of Lysator,
- *  even if so stated.
- */
-
-
-
-#include "misc-parser.h"
-
-#define EXPORT
-
-
-/*
- *  Return TRUE if the next misc-item exist, and it is of type
- *  MTYPE, FALSE otherwise.  Can only be used within the function
- *  parse_next_misc().
- */
-#define NEXT_IS(mtype)						\
-    (*info < stop_pointer && (*info)->type == (mtype))
-
-
-#define BARF	{  result.type = m_error;  return  result;  }
-
-
-/*
- *  Parse out a "group" of misc-items from a list of them pointed
- *  to by *INFO.  *STOP_POINTER must point to the item directly
- *  after the last in the list.  **INFO will be incremented to
- *  point to the item after the recently parsed out group.  The
- *  return value will have the TYPE field set to 'm_end_of_list'
- *  when the end of the list has been reached.
- */
-EXPORT  Misc_info_group
-parse_next_misc (const Misc_info	** info,
-		 const Misc_info	 * stop_pointer)
-
-{
-    Misc_info_group	  result;
-
-    
-	
-    /* Clear the 'result' struct */
-    result.type = m_error;
-    result.recipient = 0;
-    result.cc_recipient = 0;
-    result.local_no = 0;
-    result.is_received = FALSE;
-    result.comment_to = 0;
-    result.commented_in = 0;
-    result.footnote_to = 0;
-    result.footnoted_in = 0;
-    result.sender = 0;
-    result.is_sent = 0;
-
-
-    if (*info >= stop_pointer)
-    {
-	result.type = m_end_of_list;
-	return  result;
-    }
-
-    
-    /* Now, do the real work... */
-    switch ((*info)->type)
-    {
-    case  recpt:	/* These two are so similar that they can */
-    case  cc_recpt:	/* Be handled in the same clause	  */
-	if ((*info)->type == recpt)
-	{
-	    result.type = m_recpt;
-	    result.recipient = (*(*info)++).datum.recipient;
-	}
-	else
-	{
-	    result.type = m_cc_recpt;
-	    result.cc_recipient = (*(*info)++).datum.cc_recipient;
-	}
-	
-	/* There should follow a 'Local no', but check nevertheless */
-	if (! NEXT_IS (loc_no))
-	    { BARF }
-	else
-	    result.local_no = (*(*info)++).datum.local_no;
-
-	if (NEXT_IS (rec_time))
-	{
-	    result.is_received = TRUE;
-	    result.received_at = (*(*info)++).datum.received_at;
-	}
-
-	if (NEXT_IS (sent_by))
-	{
-	    result.sender = (*(*info)++).datum.sender;
-	    /* There _should_ be a 'sent_at' here... */
-	    if (! NEXT_IS (sent_at))
-		{ BARF }
-	    /* Let the following if clause insert the 'sent_at' data. */
-	}
-	if (NEXT_IS (sent_at))
-	{
-	    result.is_sent = TRUE;
-	    result.sent_at = (*(*info)++).datum.sent_at;
-	}
-
-	break;
-
-
-    case  comm_to:
-	result.type = m_comm_to;
-	result.comment_to = (*(*info)++).datum.comment_to;
-
-	if (NEXT_IS (sent_by))
-	{
-	    result.sender = (*(*info)++).datum.sender;
-	    /* There _should_ be a 'sent_at' here. */
-	    if (! NEXT_IS (sent_at))
-		{ BARF }
-	    /* Let the following if clause insert the 'sent_at' data. */
-	}
-	if (NEXT_IS (sent_at))
-	{
-	    result.is_sent = TRUE;
-	    result.sent_at = (*(*info)++).datum.sent_at;
-	}
-
-	break;
-
-
-    case  footn_to:
-	result.type = m_footn_to;
-	result.footnote_to = (*(*info)++).datum.footnote_to;
-
-	if (NEXT_IS (sent_at))
-	{
-	    result.is_sent = TRUE;
-	    result.sent_at = (*(*info)++).datum.sent_at;
-	}
-
-	break;
-
-
-    case  comm_in:
-	result.type = m_comm_in;
-	result.commented_in = (*(*info)++).datum.commented_in;
-	break;
-
-
-    case  footn_in:
-	result.type = m_footn_in;
-	result.footnoted_in = (*(*info)++).datum.footnoted_in;
-	break;
-
-
-#ifndef COMPILE_CHECKS
-    default:
-	result.type = m_error;
-	break;
-#endif
-    }
-
-    return  result;
-}
diff --git a/src/libraries/libcommon/misc-parser.h b/src/libraries/libcommon/misc-parser.h
deleted file mode 100644
index f5b1b1879..000000000
--- a/src/libraries/libcommon/misc-parser.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *  misc-parser.h
- *		Parse a list of "misc-item":s for a text in LysKOM
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- */
-
-
-
-#include <kom-types.h>
-
-
-
-typedef  enum  {
-	m_recpt,
-	m_cc_recpt,
-	m_comm_to,
-	m_comm_in,
-	m_footn_to,
-	m_footn_in,
-	m_end_of_list,	/* End of list reached	*/
-	m_error		/* Bad misc-items found */
-}  Misc_struct_type;
-
-
-typedef  struct  {
-	Misc_struct_type	type;
-	Conf_no			recipient;
-	Conf_no			cc_recipient;
-	Local_text_no		local_no;
-	Time			received_at;
-	Text_no			comment_to;
-	Text_no			commented_in;
-	Text_no			footnote_to;
-	Text_no			footnoted_in;
-	Pers_no			sender;
-	Time			sent_at;
-	Bool			is_received;
-	Bool			is_sent;
-}  Misc_info_group;
-
-
-
-#define is_received(mstruct)	((mstruct).is_received != FALSE)
-#define is_sent_by(mstruct)	((mstruct).sender != 0)
-#define is_sent(mstruct)	((mstruct).is_sent != FALSE)
-
-
-/*
- *  Parse out a "group" of misc-items from a list of them pointed
- *  to by *INFO.  *STOP_POINTER must point to the item directly
- *  after the last in the list.  **INFO will be incremented to
- *  point to the item after the recently parsed out group.  The
- *  return value will have the TYPE field set to 'm_end_of_list'
- *  when the end of the list has been reached.
- *
- *  If the has a bad format, the TYPE field will be 'm_error',
- *  and **INFO_POINTER will point to the item before the bad (or
- *  missing) item.
- */
-extern  Misc_info_group
-parse_next_misc (const Misc_info	** info_pointer,
-		 const Misc_info	 * stop_pointer);
diff --git a/src/libraries/libcommon/parser.c b/src/libraries/libcommon/parser.c
deleted file mode 100644
index fd445f717..000000000
--- a/src/libraries/libcommon/parser.c
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- *  client/parser.c  --  Routines to parse commands
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- *
- *
- *  Any opinions expressed in this code are the author's PERSONAL opinions,
- *  and does NOT, repeat NOT, represent any official standpoint of Lysator,
- *  even if so stated.
- */
-
-
-
-#include <stddef.h>
-
-#include <s-string.h>
-#include <s-collat-tabs.h>
-
-#include <misc-types.h>
-
-#include "parser.h"
-
-
-#define EXPORT			/* To emphasize export of objects */
-#define PRIVATE		static
-
-
-#if defined (SERVER)
-#	include <server/smalloc.h>
-#	define	MALLOC	smalloc
-#	define	REALLOC	srealloc
-#	define	FREE	sfree
-#elif defined (CLIENT)
-#	include	<zmalloc.h>
-#	define	MALLOC	zmalloc
-#	define	REALLOC	zrealloc
-#	define	FREE	zfree
-#else
-#	include	<malloc.h>
-#	define  MALLOC  malloc
-#	define  REALLOC realloc
-#	define  FREE	free
-#endif
-
-
-
-/*
- *  Remove paranthesized "expressions" from the string STR.
- *  E g if STR is "Foo (Bar (vfslck)) Gazonk", then it is reduced
- *  to "Foo _ Gazonk", where '_' is the character in SEPARATOR.
- *  Superflous close paranthesis are disregarded.
- */
-EXPORT  void
-remove_parenthesis (String	* str,
-		    char	  blanker)
-
-{
-    String_size		  i;	/* Index in loop */
-    int			  nesting_depth;
-    
-
-    /* Match parantheses.  Remove text inside parantheses. */
-    nesting_depth = 0;
-    for ( i = 0 ;  i < s_strlen(*str) ;  i++ )
-    {
-	if (str->string[i] == '(')
-	    nesting_depth++;
-
-	if (str->string[i] == ')')
-	{
-	    nesting_depth--;
-	    str->string[i] = blanker;		/* Don't forget that... */
-	    if (nesting_depth < 0)
-		nesting_depth = 0;
-	}
-
-	if (nesting_depth > 0)
-	    str->string[i] = blanker;
-    }
-
-    return;
-}
-
-
-
-
-/*
- *  Convert a String to a list of tokens (words).  This list is
- *  easier to parse than a string (since the string would have to
- *  be tokenized first anyway).  The last entry is EMPTY_STRING.
- *  Returns NULL if any error occured (couldn't allocate memory).
- */
-EXPORT  Parse_token *
-tokenize (const String	  source,
-	  const String	  separators)
-
-{
-    Parse_token		* tokens		= NULL;
-    Parse_token		* temp_list;		/* Temporary */
-    String		  work_string		= EMPTY_STRING;
-    String		  a_token;
-    String		  a_temp_token;		/* More temporaries... */
-    int			  no_of_tokens;
-    int			  list_size;
-    String_size		  pos_in_string;
-    const int		  chunk_size		= 10;
-
-
-
-    /* Copy string to working area */
-    if (s_strcpy(&work_string, source) == FAILURE)
-    {
-	/* Couldn't allocate space for temporary string. */
-	return  NULL;
-    }
-
-    remove_parenthesis (&work_string, separators.string[0]);
-
-    no_of_tokens = 0;
-    list_size = 0;
-    pos_in_string = 0;
-
-    while ( ! s_empty(a_token
-		      = s_strtok (work_string, &pos_in_string,
-				  separators)))
-    {
-	/* Make the token point into the original source string
-	 * instead of the working string			*/
-	a_temp_token = s_fsubstr (source,
-				  pos_in_string - s_strlen (a_token),
-				  pos_in_string - 1);
-#if 0
-// *	/* Get a real copy of the word */
-// *	a_temp_token = EMPTY_STRING;
-// *	if (s_strcpy(&a_temp_token, a_token) == FAILURE)
-// *	{
-// *	    /* Grumble... */
-// *	    free_tokens (tokens);
-// *	    s_clear(&work_string);
-// *	    return  NULL;
-// *	}
-#endif
-
-	/* Is the allocated list large enough? */
-	if (no_of_tokens++ >= list_size)
-	{
-	    /* No, allocate more */
-	    temp_list = REALLOC (tokens, (list_size += chunk_size)
-					  * sizeof(Parse_token));
-	    if (temp_list == NULL)
-	    {
-		/* Sigh. Out of memory. */
-		free_tokens (tokens);
-		s_clear (&work_string);
-		return  NULL;
-	    }
-	    else
-	    {
-		/* OK, we got what we asked for */
-		tokens = temp_list;
-	    }
-	}
-
-	/* Insert the new token in the list */
-	tokens [no_of_tokens-1].word = a_temp_token;
-	tokens [no_of_tokens-1].start_in_string =
-	    pos_in_string - s_strlen(a_temp_token);
-    }
-
-    s_clear (&work_string);
-
-    /* Is there room in the list for the 'stop' element? */
-    if (list_size <= no_of_tokens)
-    {
-	/* No, get some more memory */
-	temp_list = REALLOC (tokens, (++list_size) * sizeof(Parse_token));
-	if (temp_list == NULL)
-	{
-	    /* Sigh. Out of memory. */
-	    free_tokens (tokens);
-	    return  NULL;
-	}
-	else
-	{
-	    /* OK, we got what we asked for */
-	    tokens = temp_list;
-	}
-    }
-
-    /* OK, insert the 'stop' element. */
-    tokens [no_of_tokens].word = EMPTY_STRING;
-    tokens [no_of_tokens].start_in_string = END_OF_STRING;
-
-    return  tokens;
-}
-
-
-
-
-/*
- *  Count the number of tokens (words) in TOKEN_LIST.  Used to
- *  set the NUMBER_OF_WORDS field in a 'Matching_info' object.
- */
-extern  int
-count_words (const Parse_token   * token_list)
-
-{
-    int		no_of_words;
-
-    no_of_words = 0;
-    while (! s_empty(token_list++ -> word))
-	no_of_words++;
-
-    return  no_of_words;
-}
-
-
-
-
-/*
- *  Free the list of tokens (// and the strings they are pointing to //).
- *  Free:ing NULL is a no-op.
- */
-EXPORT  void
-free_tokens (Parse_token   * token_list)
-
-{
-    if (token_list != NULL)
-    {
-	FREE (token_list);
-    }
-}
-
-
-
-
-/*
- *  Returns the number of the first word of SOURCE that does
- *  not match PATTERN.  A word "foo" in SOURCE matches "foobar"
- *  in PATTERN, but not vice versa.
- */
-EXPORT  int
-match (Parse_token	* source,
-       Parse_token	* pattern,
-       char		  collat_tab [ COLLAT_TAB_SIZE ] )
-
-{
-    int		word_no;
-
-    word_no = 0;
-    while (   (! s_streq (pattern[word_no].word, EMPTY_STRING))
-	   && (! s_streq (source[word_no].word, EMPTY_STRING))
-	   && (s_usr_strhead (source[word_no].word,
-			      pattern[word_no].word,
-			      collat_tab)))
-    {
-	word_no++;
-    }
-
-    return  word_no;
-}
-
-
-
-
-/*
- *  Searches for a matching string in the table 'match_table'.
- *  Some weird pattern matching is done.
- *  parse().no_of_matches is -1 if an error occured (out of
- *  memory).
- *
- *  What?  You want a description of how it matches?  Forget it!   BUG!
- *  Try for yourself, and you'll find out!
- */
-
-EXPORT  Parse_info
-parse (String		  source_string,
-       Matching_info	* match_table,
-       Bool		  allow_trailing_words,
-       Bool		  number_of_words_must_match,
-       String		  separators,
-       char		  collat_tab [ COLLAT_TAB_SIZE ] )
-
-{
-    Parse_info		  answer;
-    int			* temp_indexes;
-    int			  index;
-    int			  size_of_index_list;
-    Parse_token		* source_words;
-    int			  no_of_source_words;
-    int			  first_non_matching;
-    int			  best_match;
-    int			  highest_priority;
-
-    const int		  chunk_size	= 20;
-
-    
-
-    source_words = tokenize(source_string, separators);
-    if (source_words == NULL)
-    {
-	answer.no_of_matches = -1;
-	return  answer;
-    }
-
-    no_of_source_words = count_words(source_words);
-
-    /* Check if SOURCE_STRING was empty of words */
-    if (no_of_source_words == 0)
-    {
-	answer.indexes = MALLOC (1 * sizeof(int));
-	if (answer.indexes == NULL)
-	{
-	    /* Gahh! Someone eats memory! */
-	    answer.no_of_matches = -1;
-	    return  answer;
-	}
-	answer.indexes[0] = -1;
-	answer.no_of_matches = 1;
-	return  answer;
-    }
-
-
-    answer.no_of_matches = 0;
-    answer.indexes = NULL;
-    size_of_index_list = 0;
-    index = -1;
-    best_match = 1;			/* At least one word */
-    highest_priority = 1;
-    while (! s_empty (match_table[++index].name))
-    {
-	first_non_matching = match (source_words, match_table[index].tokens,
-				    collat_tab);
-
-	if (   (    ! allow_trailing_words
-		&&  first_non_matching < no_of_source_words)
-	    || (    number_of_words_must_match
-		&&  first_non_matching != count_words (match_table[index].tokens)))
-	{
-	    continue;			/* Try next entry in table */
-	}
-
-	if (first_non_matching < best_match)
-	    continue;			/* Try next entry in table */
-
-	if (    first_non_matching == best_match
-	    &&  highest_priority > match_table[index].priority)
-	    continue;
-
-	/*  If we reach this far, then we have a match that should be
-	 *  inserted in the table.  But if it is a better match than any
-	 *  before, then we clear the table first.			*/
-	if (    first_non_matching > best_match
-	    ||  match_table[index].priority > highest_priority)
-	{
-	    highest_priority = match_table[index].priority;
-	    best_match = first_non_matching;
-	    answer.no_of_matches = 0;
-	}
-
-	/* Insert the match in the table */
-
-	/* Increase the size if necessary */
-	if (answer.no_of_matches >= size_of_index_list)
-	{
-	    temp_indexes = REALLOC (answer.indexes,
-				    (size_of_index_list += chunk_size)
-				    * sizeof(answer.indexes));
-	    if (temp_indexes == NULL)
-	    {
-		/* Grumble!  Out of memory. */
-		FREE (answer.indexes);
-		answer.no_of_matches = -1;
-		return  answer;
-	    }
-
-	    answer.indexes = temp_indexes;
-	}
-
-	highest_priority = match_table [index].priority;
-	answer.indexes[answer.no_of_matches] = index;
-	/*  Find out where the arguments start.
-	 *  This value should not be used if more than one match is found.
-	 */
-	/* Special hack needed if no parameters */
-	if (s_empty (source_words [first_non_matching].word))
-	    answer.arguments = EMPTY_STRING;
-	else
-	    answer.arguments =
-		s_fsubstr(source_string,
-			  source_words[first_non_matching].
-			  start_in_string,
-			  END_OF_STRING);
-	answer.no_of_matches++;
-    }
-
-    /* All matches found by now */
-
-    /* Strip trailing blanks from the argument */
-    if (answer.no_of_matches == 1)
-	answer.arguments = s_strip_trailing (answer.arguments, separators);
-
-    return  answer;
-
-}   /* END: parse() */
diff --git a/src/libraries/libcommon/parser.h b/src/libraries/libcommon/parser.h
deleted file mode 100644
index 922bb4416..000000000
--- a/src/libraries/libcommon/parser.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- *  client/parser.h  --  Header file for LysKOM command parsing routines
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  e-mail:	Bellman@Lysator.LiU.SE
- */
-
-
-#ifndef  PARSER_H_ALREADY_INCLUDED__
-#define  PARSER_H_ALREADY_INCLUDED__
-
-
-#include <misc-types.h>
-#include <s-string.h>
-#include <s-collat-tabs.h>
-
-
-
-/*
- *  Information about one word.  If the field 'word' is
- *  EMPTY_STRING, then the struct is considered to be the last
- *  in an "array".		BUG: "array" is wrong word
- */
-typedef	struct {
-	String		word;
-	String_size	start_in_string;
-} Parse_token;
-
-
-/*
- *  Information about one string to match against during parse().
- *  A list of these should be passed to parse() as the CMD_TABLE
- *  parameter.  The 'tokens' field is set by doing
- *	I.tokens = tokenize(I.name, Separators);
- */
-typedef	struct matching_info {
-	String		   name;	/* Name to match against */
-	Parse_token	 * tokens;	/* Tokenized version of name */
-	int		   priority;	/* Normally in interval 1..15 */
-} Matching_info;
-
-
-
-/*
- *  Remove paranthesized "expressions" from the string STR by
- *  replacing them with the character SEPARATOR.
- *  Superflous close paranthesis are disregarded.
- */
-extern  void
-remove_parenthesis (String	* str,
-		    char	  separator);
-
-
-
-/*
- *  Convert a String to a list of tokens (words).  This list is
- *  easier to parse than a string (since the string would have to
- *  be tokenized first anyway).
- *  Returns NULL if any error occured (couldn't allocate memory).
- */
-extern  Parse_token *
-tokenize (const String	  source,
-	  const String	  separators);
-
-
-
-/*
- *  Count the number of tokens (words) in TOKEN_LIST.  Used to
- *  set the NUMBER_OF_WORDS field in a 'Matching_info' object.
- */
-extern  int
-count_words (const Parse_token   * token_list);
-
-
-
-/*
- *  Free the list of tokens (// and the strings they are pointing to //).
- *  Free:ing NULL is a no-op.
- */
-extern  void
-free_tokens (Parse_token   * token_list);
-
-
-
-/*
- *  Returns the number of the first word of SOURCE that does
- *  not match PATTERN.  A word "foo" in SOURCE matches "foobar"
- *  in PATTERN, but not vice versa.
- */
-extern  int
-match (Parse_token	* source,
-       Parse_token	* pattern,
-       char		  collat_tab [ COLLAT_TAB_SIZE ] );
-
-
-
-/*
- *  Contains the result of a parse().
- */
-typedef struct {
-	int	  no_of_matches;	/* Number of found matches */
-	int	* indexes;		/* List of indexes */
-	String	  arguments;		/* The arguments... */
-} Parse_info;
-
-
-/*
- *  Searches for a matching string in the table 'match_table'.
- *  Some weird pattern matching is done.  The 'ARGUMENTS' field of
- *  the result is not a separate String, but points into
- *  SOURCE_STRING.
- *  If ALLOW_TRAILING_WORDS is false, then SOURCE_STRING may not
- *  contain any trailing words.
- *  If NUMBER_OF_WORDS_MUST_MATCH is true, then all the words
- *  in from the entry in MATCH_TABLE must be present (possibly
- *  abbrevated) in SOURCE_STRING.
- *  parse().no_of_matches is -1 if an error occured (out of
- *  memory).
- *  If SOURCE_STRING is empty, i e does not contain any words,
- *  the 'no_of_matches' field is 1, and indexes[0] is -1.
- *
- *  What?  You want a description of how it matches?  Forget it!  BUG!
- *  Try for yourself, and you'll find out!
- */
-
-extern  Parse_info
-parse (String		  source_string,
-       Matching_info	* match_table,
-       Bool		  allow_trailing_words,
-       Bool		  number_of_words_must_match,
-       String		  separators,
-       char		  collat_tab [ COLLAT_TAB_SIZE ] );
-
-
-#endif	/*  PARSER_H_ALREADY_INCLUDED__  */
diff --git a/src/libraries/libmisc/ChangeLog b/src/libraries/libmisc/ChangeLog
deleted file mode 100644
index 55adb3952..000000000
--- a/src/libraries/libmisc/ChangeLog
+++ /dev/null
@@ -1,43 +0,0 @@
-Tue Aug 27 07:20:34 1991  Per Cederqvist  (ceder at lysator)
-
-	* pom.c: Tog bort variablerna ts och pmt som inte anv{nds.
-
-Sat Jul  6 05:43:41 1991  Per Cederqvist  (ceder at lysator)
-
-	* Fullbordade {ndringen fr}n char till unsigned char i
-	  s-string.[hc] som Peter p}b|rjade.
-
-	* Skrev om Makefilen f|r att klara RCS.
-
-	* Alla filer i libmisc.a placerade under RCS.
-
-	* s-collat-tables.[hco] omd|pt till s-collat-tabs.[hco]. ar tycker
-	  inte om f|r l}nga namn.
-
-Thu Dec 20 04:59:36 1990  Thomas Bellman  (bellman at lave)
-
-	* s-string.[ch]: s_strchr() och s_strrchr(): Lade till en
-	  parameter som anger var s|kningen ska b|rja.
-
-	* s-string.c: [ndrat fr}n if-satser f|r kontroll av parametrar
-	  till att anv{nda assert()-makrot.
-
-	* s-string.[ch]: Lade till s_strrchr().
-
-	* zmalloc.c: Fixat en del buggar d{r pekare till z_info-structen
-	  returnerades i st f pekare efter denna, samt lite annat.
-
-Sat Dec  8 03:05:51 1990  Thomas Bellman  (bellman at laila)
-
-	* [ndrade tillbaka s_strcpy().  Den ska sl{ppa loss minnet {ven om
-	  den f}r en EMPTY_STRING.
-
-Sat Dec  1 12:09:35 1990  Lars Willf|r  (willfor at nanny)
-
-	* [ndrade s_strcpy s} att den med s{kerhet fungerar {ven om
-	  source_string == EMPTY_STRING.
-
-Thu Aug  9 05:12:52 1990  Thomas Bellman  (bellman at laila)
-
-	* Biblioteket skapat ig}r.
-
diff --git a/src/libraries/libmisc/Makefile b/src/libraries/libmisc/Makefile
deleted file mode 100644
index cd4627ab6..000000000
--- a/src/libraries/libmisc/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-#  Makefile for LysKOM
-#
-###############################################################################
-#
-#  SPECIAL CONSIDERATIONS:
-#
-#  -  Requires GNU make.
-#  -  CC, OPTIMIZE-FLAGS and other make variables are passed down 
-#     in the environment.
-#  -  C compiler must be ANSI conformant.
-#
-###############################################################################
-#
-#  SPECIAL TARGETS:
-###############################################################################
-TOPDIR = /usr/lyskom/src
-SCRIPTDIR = $(TOPDIR)/scripts
-
-include $(SCRIPTDIR)/import.make
-
-TARGET = -DCLIENT
-
-LIBNAME = libmisc.a
-
-LIBOBJS = pom.o s-collat-tabs.o s-string.o zmalloc.o
-
-INSTALL-HDRS = pom.h s-collat-tabs.h s-string.h zmalloc.h
-
-all:	$(LIBNAME)
-
-$(LIBNAME): $(LIBOBJS)
-	$(AR) $(ARFLAGS) $(LIBNAME) $?
-	ranlib $(LIBNAME)
-
-libraries: $(LIBNAME)
-	$(RM) $(LIBDIR)/$(LIBNAME)
-	cp $(LIBNAME) $(LIBDIR)/$(LIBNAME)
-	ranlib -t $(LIBDIR)/$(LIBNAME)
-
-includes:
-	for i in $(INSTALL-HDRS);\
-	do	\
-		cmp $$i $(INCLUDEDIR)/$$i || cp $$i $(INCLUDEDIR)/$$i; \
-	done
-
-binaries:;
-
-testnumlist: testnumlist.o numlist.o
-	$(CC) -o testnumlist testnumlist.o numlist.o
-
-
-clean:
-	$(RM) ${OBJECTS} *~ core temp-Makefile Distfile *.o
-
-
-# Recreate the Makefile
-include $(SCRIPTDIR)/Parallell-depend.make
-
-
-tags:
-	etags -t $(INCLUDEDIR)/*.h *.[hc]	
-
-specials: includes;
-
-include dependencies
diff --git a/src/libraries/libmisc/README b/src/libraries/libmisc/README
deleted file mode 100644
index 922de6f14..000000000
--- a/src/libraries/libmisc/README
+++ /dev/null
@@ -1,2 +0,0 @@
-All utveckling i detta bibliotek sker p} LLL.
-H{r ligger includefiler som {r gemensamma f|r server och klient.
diff --git a/src/libraries/libmisc/dependencies b/src/libraries/libmisc/dependencies
deleted file mode 100644
index 123b2966a..000000000
--- a/src/libraries/libmisc/dependencies
+++ /dev/null
@@ -1,46 +0,0 @@
-numlist.o : numlist.c /users/ceder/lyskom/include/ansi/stdio.h \
-  /users/ceder/lyskom/include/ansi/stdlib.h \
-  /users/ceder/lyskom/include/ansi/stddef.h \
-  /users/ceder/lyskom/include/ansi/sys/types.h /usr/include/sys/types.h \
-  /usr/gnu/lib/gcc-include/sys/stdtypes.h /usr/include/sys/stdtypes.h \
-  /usr/include/sys/sysmacros.h /users/ceder/lyskom/include/misc-types.h \
-  numlist.h 
-testnumlist.o : testnumlist.c /users/ceder/lyskom/include/ansi/stdio.h \
-  /users/ceder/lyskom/include/ansi/stdlib.h \
-  /users/ceder/lyskom/include/ansi/stddef.h \
-  /users/ceder/lyskom/include/ansi/sys/types.h /usr/include/sys/types.h \
-  /usr/gnu/lib/gcc-include/sys/stdtypes.h /usr/include/sys/stdtypes.h \
-  /usr/include/sys/sysmacros.h /users/ceder/lyskom/include/misc-types.h \
-  numlist.h 
-numlist2.o : numlist2.c /users/ceder/lyskom/include/ansi/stdio.h \
-  /users/ceder/lyskom/include/ansi/stdlib.h \
-  /users/ceder/lyskom/include/ansi/stddef.h \
-  /users/ceder/lyskom/include/ansi/sys/types.h /usr/include/sys/types.h \
-  /usr/gnu/lib/gcc-include/sys/stdtypes.h /usr/include/sys/stdtypes.h \
-  /usr/include/sys/sysmacros.h /users/ceder/lyskom/include/misc-types.h \
-  numlist2.h 
-zmalloc.o : zmalloc.c /users/ceder/lyskom/include/ansi/stddef.h \
-  /users/ceder/lyskom/include/ansi/sys/types.h /usr/include/sys/types.h \
-  /usr/gnu/lib/gcc-include/sys/stdtypes.h /usr/include/sys/stdtypes.h \
-  /usr/include/sys/sysmacros.h /users/ceder/lyskom/include/ansi/malloc.h \
-  /users/ceder/lyskom/include/ansi/string.h \
-  /users/ceder/lyskom/include/compiler.h zmalloc.h 
-pom.o : pom.c /users/ceder/lyskom/include/ansi/sys/types.h \
-  /usr/include/sys/types.h /usr/gnu/lib/gcc-include/sys/stdtypes.h \
-  /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h \
-  /users/ceder/lyskom/include/ansi/time.h /usr/include/time.h \
-  /users/ceder/lyskom/include/ansi/math.h /usr/include/math.h \
-  /usr/include/floatingpoint.h /usr/include/sys/ieeefp.h \
-  /users/ceder/lyskom/include/ansi/stdio.h pom.h 
-s-collat-tabs.o : s-collat-tabs.c s-collat-tabs.h \
-  /usr/gnu/lib/gcc-include/limits.h 
-s-string.o : s-string.c /users/ceder/lyskom/include/ansi/sys/types.h \
-  /usr/include/sys/types.h /usr/gnu/lib/gcc-include/sys/stdtypes.h \
-  /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h \
-  /users/ceder/lyskom/include/ansi/stdio.h \
-  /users/ceder/lyskom/include/ansi/string.h \
-  /users/ceder/lyskom/include/ansi/ctype.h /usr/include/ctype.h \
-  /users/ceder/lyskom/include/ansi/stdlib.h \
-  /users/ceder/lyskom/include/ansi/stddef.h /usr/gnu/lib/gcc-include/assert.h \
-  /users/ceder/lyskom/include/misc-types.h s-collat-tabs.h \
-  /usr/gnu/lib/gcc-include/limits.h s-string.h 
diff --git a/src/libraries/libmisc/numlist.c b/src/libraries/libmisc/numlist.c
deleted file mode 100644
index fe5caa4ec..000000000
--- a/src/libraries/libmisc/numlist.c
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
- * File: numlist.c
- * 
- * A numlist is supposed to be an efficient implementation of 
- * a list of numbers. One of the big features is intervals.
- *
- * Author: Inge Wallin
- *
- * Three plus signs (+++) denote places where more work may be needed.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <misc-types.h>
-
-#include "numlist.h"
-
-
-/* ================================================================ */
-/*                        Some useful macros                        */
-
-
-#define IS_INTERVAL_START(x)  (((x) & INTERVAL_MASK) == INTERVAL_START)
-#define IS_INTERVAL_END(x)    (((x) & INTERVAL_MASK) == INTERVAL_END)
-
-#define NUMBER_OF(x)          ((x) & NUMBER_MASK)
-
-#define MAKE_INTERVAL_START(x)  ((x) | INTERVAL_START)
-#define MAKE_INTERVAL_END(x)    ((x) | INTERVAL_END)
-
-
-/* ================================================================ */
-/*                           Numlist_node                           */
-
-
-static Numlist_node *
-numlist_node_create()
-{
-    Numlist_node  * nln;
-
-    nln = (Numlist_node *) malloc(sizeof(Numlist_node));
-    if (nln == NULL) {
-	fprintf(stderr, "Virtual memory exhausted");
-	abort();
-    }
-
-    nln->num_numbers = 0;
-    nln->next = NULL;
-    
-    return nln;
-}
-
-
-
-/*
- * Insert the number NUM at index INDEX in the numlist node NLN.
- * All numbers starting at index INDEX and subsequent are moved
- * one step back.
- */
-
-static void
-numlist_node_insert_num(Numlist_node  * nln,
-			int             index,
-			u_long          num)
-{
-    int   i;
-
-    for (i = nln->num_numbers; i > index; --i)
-	nln->numbers[i] = nln->numbers[i - 1];
-    nln->numbers[index] = num;
-    ++nln->num_numbers;
-}
-
-
-
-/*
- * Delete the number with index INDEX from the node NODE. If this
- * was the last number in the node, delete the entire node. PREV_NODE
- * points to the node just before NODE and NL is the Numlist they
- * both belong to.
- */
-
-static void
-numlist_node_del_num(Numlist       * nl,
-		     Numlist_node  * node,
-		     Numlist_node  * prev_node,
-		     int             index)
-{
-    int   i;
-
-    /* Delete the number from this node. */
-    for (i = index; i < node->num_numbers - 1; ++i)
-	node->numbers[i] = node->numbers[i + 1];
-    --(node->num_numbers);
-
-    /* If this node became empty, delete it and fix all pointers. */
-    if (node->num_numbers == 0) {
-	if (prev_node == NULL) {
-	    nl->first = node->next;
-	    if (nl->first == NULL)
-		nl->last = NULL;
-	} else {
-	    prev_node->next = node->next;
-	    if (nl->last == node)
-		nl->last = prev_node;
-	}
-	free(node);
-    }
-}
-
-
-
-/*
- * Split the node NODE into two nodes.  The numbers starting with the
- * index INDEX is put in the second (new) node and the other remain
- * in the old one.  NL points to the Numlist the node belongs to.
- */
-
-static void
-numlist_node_split(Numlist       * nl,
-		   Numlist_node  * node,
-		   int             index)
-{
-    Numlist_node  * new_node;
-    int             i;
-
-    new_node = numlist_node_create();
-    new_node->next = node->next;
-    node->next = new_node;
-
-    for (i = index; i < node->num_numbers; ++i)
-	new_node->numbers[i - index] = node->numbers[i];
-
-    new_node->num_numbers = node->num_numbers - index;
-    node->num_numbers = index;
-
-    if (nl->last == node)
-	nl->last = new_node;
-}
-
-
-/* ================================================================ */
-/*                              Numlist                             */
-
-
-/*
- * Create a new, empty Numlist and return a pointer to it.
- */
-
-Numlist *
-numlist_create()
-{
-    Numlist  * nl;
-
-    nl = (Numlist *) malloc(sizeof(Numlist));
-    if (nl == NULL) {
-	fprintf(stderr, "Virtual memory exhausted");
-	abort();
-    }
-
-    nl->first = NULL;
-    nl->last = NULL;
-    nl->last_num = NUMLIST_NO_NUMBER;
-    
-    return nl;
-}
-
-
-
-/*
- * Return TRUE if the Numlist NL is empty, otherwise return FALSE.
- */
-
-Bool
-numlist_isempty(Numlist *nl)
-{
-    return nl->first == NULL;
-}
-
-
-
-/*
- * return TRUE if NUM is a member of the numlist NL, otherwise
- * return FALSE.
- */
-
-Bool
-numlist_member(Numlist *nl, u_long num)
-{
-    Numlist_node  * nln;
-    u_long          last;
-    int             i;
-
-    /* If num is bigger than the last number, return FALSE immediately. */
-    last = numlist_last(nl);
-    if (last == NUMLIST_ERR || num > last)
-	return FALSE;
-
-    nln = nl->first;
-    while (nln != NULL) {
-	if (num <= NUMBER_OF(nln->numbers[nln->num_numbers - 1])) {
-	    for (i = 0; i < nln->num_numbers; ++i) {
-
-		/* Check if we can abort the loop. */
-		if (num < NUMBER_OF(nln->numbers[i]))
-		    return FALSE;
-
-		/* Take care of an interval. */
-		if (IS_INTERVAL_START(nln->numbers[i])) {
-		    if (NUMBER_OF(nln->numbers[i]) <= num
-			&& num <= NUMBER_OF(nln->numbers[i + 1]))
-			return TRUE;
-		    ++i;
-		} else {
-		    if (nln->numbers[i] == num)
-			return TRUE;
-		}
-	    }
-	}
-
-	nln = nln->next;
-    }
-    return FALSE;
-}
-
-
-
-/*
- * Return the first number in the numlist NL. Also store a pointer
- * to the first node, the index to this particular cell and the
- * first number itself in the numlist. This makes it more efficient
- * to get the next number later.
- *
- * If NL is empty, return the constant NUMLIST_ERR.
- */
-
-u_long
-numlist_first(Numlist *nl)
-{
-    u_long   first;
-
-    if (numlist_isempty(nl)) {
-	return NUMLIST_ERR;
-    } else {
-	first = NUMBER_OF(nl->first->numbers[0]);
-	nl->last_num = first;
-	nl->last_node = nl->first;
-	nl->last_index = 0;
-
-	return first;
-    }
-}
-
-
-
-/*
- * Return the last number in the numlist NL.  If NL is empty, 
- * return the constant NUMLIST_ERR.
- * 
- * Unlike numlist_first(), this routine does NOT set last_num 
- * and the other cache fields in NL.
- */
-
-u_long
-numlist_last(Numlist *nl)
-{
-    Numlist_node  * last;
-
-    if (numlist_isempty(nl)) {
-	return NUMLIST_ERR;
-    } else {
-	last = nl->last;
-	return NUMBER_OF(last->numbers[last->num_numbers - 1]);
-    }
-}
-
-
-
-/*
- * Return the first number that is a member of the numlist NL and
- * bigger than NUM. If there is no such number, the constant
- * NUMLIST_ERR is returned.
- */
-
-u_long
-numlist_next(Numlist *nl, u_long num)
-{    
-    Numlist_node  * nln;
-    int             index;
-    int             i;
-
-    /* If we got NUM the last time, we have cached some info about */
-    /* where to find the next entry. Use that info. */
-    if (num == nl->last_num) {
-	nln = nl->last_node;
-	index = nl->last_index;
-	if (IS_INTERVAL_START(nln->numbers[index])) {
-
-	    /* Last number was in an interval. */
-	    if (num < NUMBER_OF(nln->numbers[index + 1])) {
-		nl->last_num = num + 1;
-		return num + 1;
-	    } else {
-		++index;
-	    }
-	} 
-
-	++index;
-	if (index < nln->num_numbers) {
-	    nl->last_num = NUMBER_OF(nln->numbers[index]);
-	    nl->last_index = index;
-	    return nl->last_num;
-	}
-
-	/* If we get here the next number is not in this node */
-	/* but in the next. */
-	nln = nln->next;
-	if (nln == NULL) {
-	    nl->last_num = NUMLIST_NO_NUMBER;
-	    return NUMLIST_ERR;
-	} else {
-	    nl->last_num = NUMBER_OF(nln->numbers[0]);
-	    nl->last_node = nln;
-	    nl->last_index = 0;
-
-	    return nl->last_num;
-	}
-    }
-	
-    /* ...otherwise find NUM in the list and return the next number.  */
-    nln = nl->first;
-    ++num;
-    while (nln != NULL) {
-	if (num <= NUMBER_OF(nln->numbers[nln->num_numbers - 1])) {
-	    for (i = 0; i < nln->num_numbers; ++i) {
-
-		if (num <= NUMBER_OF(nln->numbers[i])) {
-		    nl->last_num = NUMBER_OF(nln->numbers[i]);
-		    nl->last_node = nln;
-		    nl->last_index = i;
-		    return nl->last_num;
-		}
-
-		/* Take care of an interval. */
-		if (IS_INTERVAL_START(nln->numbers[i])) {
-		    if (num <= NUMBER_OF(nln->numbers[i + 1])) {
-			nl->last_num = num;
-			nl->last_node = nln;
-			nl->last_index = i;
-
-			return num;
-		    } else {
-			++i;
-		    }
-		}
-	    }
-	}
-	nln = nln->next;
-    }
-
-    return NUMLIST_ERR;
-}
-
-
-
-/*
- * Enter the number NUM into the numlist NL. If NL is already in
- * NL, do nothing.
- */
-
-void
-numlist_insert(Numlist *nl, u_long num)
-{
-    Numlist_node  * nln;
-    Numlist_node  * last;
-    int             last_num;
-    int             i;
-    int             j;
-
-    nl->last_num = NUMLIST_NO_NUMBER;
-
-    last_num = numlist_last(nl);
-    if (last_num != NUMLIST_ERR && num <= last_num) {
-	nln = nl->first;
-	while (nln != NULL) {
-	    if (num <= NUMBER_OF(nln->numbers[nln->num_numbers - 1])) {
-		for (i = 0; i < nln->num_numbers; ++i) {
-		    if (num <= NUMBER_OF(nln->numbers[i]))
-			goto found;
-		}
-	    }
-	    nln = nln->next;
-	}
-    }
-    
-    /* If we get here, num is not found. It is also the case that num */
-    /* is bigger than all numbers in the numlist. */
-    last = nl->last;
-    if (last == NULL) {
-
-	/* Empty numlist. */
-	nl->first = nl->last = numlist_node_create();
-	nl->first->num_numbers = 1;
-	nl->first->numbers[0] = num;
-
-    } else if ((NUMBER_OF(last->numbers[last->num_numbers - 1]) == num - 1)
-	       && IS_INTERVAL_END(last->numbers[last->num_numbers - 1])) {
-	/* Enter num into last interval */
-	last->numbers[last->num_numbers - 1] = MAKE_INTERVAL_END(num);
-    
-    } else if (last->num_numbers < NUM_LONGS_IN_NUMLIST) {
-	/* There is room for num in the last Numlist_node. */
-	if (last->numbers[last->num_numbers - 1] == num - 1) {
-	    last->numbers[last->num_numbers - 1]
-		= MAKE_INTERVAL_START(num - 1);
-	    last->numbers[last->num_numbers++] = MAKE_INTERVAL_END(num);
-	} else
-	    last->numbers[last->num_numbers++] = num;
-	
-	
-    } else {
-	/* We have to create a new Numlist_node to host num. */
-	nl->last = numlist_node_create();
-	last->next = nl->last;
-	nl->last->num_numbers = 1;
-	nl->last->numbers[0] = num;
-    }
-    return;
-
-  found:
-    /* Here we have found a number that is bigger than num. */
-    /* nln points to the Numlist_node and i is the index to it. */
-    
-    /* If num is already in the list, do nothing. */
-    if (NUMBER_OF(nln->numbers[i]) == num
-	|| IS_INTERVAL_END(nln->numbers[i]))
-	return;
-
-    /* Step through the different cases and take appropriate action. */
-    if (IS_INTERVAL_START(nln->numbers[i])
-	&& NUMBER_OF(nln->numbers[i]) == num + 1) {
-
-	/* Enter num into the next interval. */
-	nln->numbers[i] = MAKE_INTERVAL_START(num);
-
-	/* +++Take care of the case that two intervals could be */
-	/*    collapsed into one, e.g. like 17-21, 22-31 => 17-31. */
-
-    } else if (i > 0 
-	       && IS_INTERVAL_END(nln->numbers[i - 1])
-	       && NUMBER_OF(nln->numbers[i - 1]) == num - 1) {
-
-	/* Enter num into the previous interval. */
-	nln->numbers[i - 1] = MAKE_INTERVAL_END(num);
-
-    } else if (nln->num_numbers < NUM_LONGS_IN_NUMLIST) {
-
-	/* Squeeze in num. There is room in this Numlist_node. */
-	for (j = nln->num_numbers; j > i; --j)
-	    nln->numbers[j] = nln->numbers[j - 1];
-	if (i > 0 && nln->numbers[i - 1] == num - 1) {
-	    nln->numbers[i - 1] = MAKE_INTERVAL_START(num - 1);
-	    nln->numbers[i] = MAKE_INTERVAL_END(num);
-	} else if (i < nln->num_numbers - 1 
-		   && nln->numbers[i + 1] == num + 1) {
-	    nln->numbers[i] = MAKE_INTERVAL_START(num);
-	    nln->numbers[i + 1] = MAKE_INTERVAL_END(num + 1);
-	} else {
-	    nln->numbers[i] = num;
-	}
-
-	nln->num_numbers++;
-
-    } else {
-	/* Squeeze in num. There is no room in this Numlist_node. */
-	/* +++This implementation is a bit crude. We should split */
-	/*    the node as evenly as possible. */
-
-	numlist_node_split(nl, nln, i);
-	nln->numbers[nln->num_numbers++] = num;
-    }
-
-    /* +++We never take care of the case that two intervals in adjacent */
-    /*    nodes could be collapsed into one. Should we? */
-    return;
-}
-
-
-
-/*
- * Delete the number NUM from the Numlist NL. If NUM is not
- * a member of NL, do nothing.
- */
-
-void
-numlist_delete(Numlist *nl, u_long num)
-{
-    Numlist_node  * nln1;
-    Numlist_node  * nln2;
-    int             last_num;
-    int             i;
-    int             j;
-
-    nl->last_num = NUMLIST_NO_NUMBER;
-
-    last_num = numlist_last(nl);
-    if (last_num == NUMLIST_ERR || num > last_num)
-	return;
-
-    nln1 = nl->first;
-    nln2 = NULL;
-    while (nln1 != NULL) {
-	if (num <= NUMBER_OF(nln1->numbers[nln1->num_numbers - 1])) {
-	    for (i = 0; i < nln1->num_numbers; ++i) {
-		if (num == nln1->numbers[i] /* An ordinary number */
-		    || (IS_INTERVAL_START(nln1->numbers[i])
-			&& NUMBER_OF(nln1->numbers[i]) <= num
-			&& num <= NUMBER_OF(nln1->numbers[++i])))
-		    goto found;
-
-		/* If we are already past the number, it is not here */
-		/*  ==> return. */
-		if (num < NUMBER_OF(nln1->numbers[i]))
-		    return;
-	    }
-	}
-	nln2 = nln1;
-	nln1 = nln1->next;
-    }
-    return;
-    
-    /* When we get here, nln1 points to the node where the number */
-    /* resides, nln2 points to the node before if not NULL, and i */
-    /* i is the index into the node. If the number is within an */
-    /* interval, i points to the end of the interval (++i above). */
-  found:
-    if ((nln1->numbers[i] & INTERVAL_MASK) == 0) {
-	/* An ordinary number. */
-	numlist_node_del_num(nl, nln1, nln2, i);
-	
-    } else {
-	/* An interval. */
-	if (NUMBER_OF(nln1->numbers[i]) == num) {
-	    /* The number is at the end of the interval. */
-	    --(nln1->numbers[i]);
-	    if (NUMBER_OF(nln1->numbers[i])
-		== NUMBER_OF(nln1->numbers[i - 1])) {
-
-		numlist_node_del_num(nl, nln1, nln2, i);
-		nln1->numbers[i - 1] &= NUMBER_MASK;
-	    }
-
-	} else if (NUMBER_OF(nln1->numbers[i - 1]) == num) {
-	    /* The number is at the start of the interval. */
-	    ++(nln1->numbers[i - 1]);
-	    if (NUMBER_OF(nln1->numbers[i])
-		== NUMBER_OF(nln1->numbers[i - 1])) {
-
-		numlist_node_del_num(nl, nln1, nln2, i);
-		nln1->numbers[i - 1] &= NUMBER_MASK;
-	    }
-	    
-	} else if (NUMBER_OF(nln1->numbers[i - 1]) == num - 1
-		   && NUMBER_OF(nln1->numbers[i]) == num + 1) {
-	    /* The interval is only 3 numbers */
-	    nln1->numbers[i - 1] &= NUMBER_MASK;
-	    nln1->numbers[i] &= NUMBER_MASK;
-
-	} else {
-	    /* The number is within the interval. We must split it. */
-	    if (IS_INTERVAL_END(nln1->numbers[i]))
-		--i;
-
-	    /* If there is not room for two new numbers, split the node. */
-	    if (nln1->num_numbers > NUM_LONGS_IN_NUMLIST - 2) {
-		if (i < NUM_LONGS_IN_NUMLIST / 2) {	
-		    /* Split the node after the interval and keep it here. */
-		    numlist_node_split(nl, nln1, i + 2);
-		} else {
-		    /* Split the node before the interval */
-		    /* and use the new node. */
-		    numlist_node_split(nl, nln1, i);
-		    nln1 = nln1->next;
-		    i = 0;
-		}
-	    }
-
-	    /* Now nln1 points to the node with the interval and */
-	    /* i is the index to the start of the interval. */
-	    if (NUMBER_OF(nln1->numbers[i]) == num - 1) {
-		/* NUM is second element ==> leave only one to the left. */
-		numlist_node_insert_num(nln1, i,
-					NUMBER_OF(nln1->numbers[i]));
-		nln1->numbers[i + 1] += 2;
-
-	    } else if (NUMBER_OF(nln1->numbers[i + 1]) == num + 1) {
-		/* NUM is second last element ==> leave only one to */
-		/* the right. */
-		numlist_node_insert_num(nln1, i + 2,
-					NUMBER_OF(nln1->numbers[i + 1]));
-		nln1->numbers[i + 1] -= 2;
-
-	    } else {
-		/* NUM is deep inside the interval */
-		/*   ==> Make 2 new intervals. */
-		for (j = nln1->num_numbers + 1; j >= i + 2; --j)
-		    nln1->numbers[j] = nln1->numbers[j - 2];
-		nln1->numbers[i + 1] = MAKE_INTERVAL_END(num - 1);
-		nln1->numbers[i + 2] = MAKE_INTERVAL_START(num + 1);
-		nln1->num_numbers += 2;
-	    }
-	}
-    }
-}
diff --git a/src/libraries/libmisc/numlist.h b/src/libraries/libmisc/numlist.h
deleted file mode 100644
index c0f4c0f94..000000000
--- a/src/libraries/libmisc/numlist.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * File: numlist.h
- * 
- * A numlist is an ordered list of numbers. One of the big features 
- * of this implementation is intervals.
- *
- * Author: Inge Wallin
- */
-
-
-#ifndef NUMLIST__H
-#define NUMLIST__H
-
-#include <sys/types.h>
-
-
-#define INTERVAL_MASK    0xc0000000
-#define NUMBER_MASK      0x3fffffff
-#define INTERVAL_START   0x80000000
-#define INTERVAL_END     0x40000000
-
-
-/* This constant is returned whenever there are no more fitting values */
-/* for a call, e.g. when numlist_first() is called with an empty Numlist. */
-
-#define NUMLIST_ERR      0xffffffff
-
-
-/* This constant is stored in the field last_num when no previous */
-/* number is stored. */
-
-#define NUMLIST_NO_NUMBER   0xffffffff
-
-
-/*
- * One int + 13 longs + one pointer + the length info that 
- * malloc adds makes 64 bytes. This should make allocation fairly
- * efficient.
- */
-
-/* #define NUM_LONGS_IN_NUMLIST  13 */
-#define NUM_LONGS_IN_NUMLIST  5
-
-
-typedef struct numlist_node   Numlist_node;
-typedef struct numlist        Numlist;
-
-struct numlist_node {
-    int             num_numbers;
-    u_long          numbers[NUM_LONGS_IN_NUMLIST];
-    Numlist_node  * next;
-};
-
-
-struct numlist {
-    Numlist_node  * first;
-    Numlist_node  * last;
-    
-    /* The following info is used only for speeding up numlist_next(). */
-    u_long          last_num;	/* The last number returned. */
-    Numlist_node  * last_node;	/* The node containing the last number... */
-    int             last_index;	/* ...and the index to it. */
-};
-
-
-/* ================================================================ */
-/*    Prototypes for all global functions in the numlist package.   */
-
-
-Numlist *numlist_create(void);
-Bool     numlist_isempty(Numlist *);
-Bool     numlist_member(Numlist *, u_long);
-u_long   numlist_first(Numlist *);
-u_long   numlist_last(Numlist *);
-u_long   numlist_next(Numlist *, u_long);
-void     numlist_insert(Numlist *, u_long);
-void     numlist_delete(Numlist *, u_long);
-
-/*
- * Useful (?) but not yet implemented:
- *
- * void     numlist_destroy(Numlist *);
- * void     numlist_insert_interval(Numlist *, u_long, u_long);
- * void     numlist_delete_interval(Numlist *, u_long, u_long);
- * Numlist *numlist_union(Numlist *, Numlist *);
- * Numlist *numlist_intersection(Numlist *, Numlist *);
- * Numlist *numlist_difference(Numlist *, Numlist *);
- * void     numlist_print(FILE *, Numlist *);
- * void     numlist_read(FILE *, Numlist *);
- */
-
-#endif   /* NUMLIST__H */
diff --git a/src/libraries/libmisc/numlist2.c b/src/libraries/libmisc/numlist2.c
deleted file mode 100644
index 2124a4540..000000000
--- a/src/libraries/libmisc/numlist2.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * File: numlist2.c
- * 
- * This file is supposed to be a reference while testing numlist.
- *
- * Author: Inge Wallin
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <misc-types.h>
-
-#include "numlist2.h"
-
-
-Numlist *
-Numlist_create()
-{
-    Numlist  * nl;
-    int        i;
-
-    nl = (Numlist *) malloc(sizeof(Numlist));
-    if (nl == NULL) {
-	fprintf(stderr, "Virtual memory exhausted");
-	abort();
-    }
-
-    for (i = 0; i < NUM_CELLS; ++i)
-	nl->cells[i] = 0;
-    
-    return nl;
-}
-
-
-Bool
-numlist_isempty(Numlist *nl)
-{
-    int   i;
-
-    for (i = 0; i < NUM_CELLS; ++i)
-	if (nl->cells[i] != 0)
-	    return FALSE;
-    
-    return TRUE;
-}
-
-
-Bool
-numlist_member(Numlist *nl, u_long num)
-{
-    return (nl->cells[num / 32] & ((u_long) 1 << (num & 31))) != 0;
-}
-
-
-u_long
-numlist_first(Numlist *nl)
-{
-    int   i;
-    int   j;
-
-    if (numlist_isempty(nl))
-	return NUMLIST_ERR;
-
-    for (i = 0; i < NUM_CELLS; ++i) {
-	if (nl->cells[i] != 0) {
-	    for (j = 31; j >= 0; --j) {
-		if ((nl->cells[i] & ((u_long) 1 << j)) != 0)
-		    return i * 32 + j;
-	    }
-	}
-    }
-    
-    return NUMLIST_ERR;
-}
-
-
-u_long
-numlist_next(Numlist *nl, u_long num)
-{
-    /* NYI */
-    return NUMLIST_ERR;
-}
-
-
-void
-numlist_insert(Numlist *nl, u_long num)
-{
-    nl->cells[num / 32] |= ((u_long) 1 << (num & 31));
-}
-
-
-void
-numlist_delete(Numlist *nl, u_long num)
-{
-    nl->cells[num / 32] &= ~((u_long) 1 << (num & 31));
-}
-
diff --git a/src/libraries/libmisc/numlist2.h b/src/libraries/libmisc/numlist2.h
deleted file mode 100644
index da0a59412..000000000
--- a/src/libraries/libmisc/numlist2.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * File: numlist2.h
- * 
- * This file is supposed to be a reference while testing numlist.
- *
- * Author: Inge Wallin
- */
-
-
-#ifndef NUMLIST2__H
-#define NUMLIST2__H
-
-#include <sys/types.h>
-
-
-#define NUMLIST_ERR      0xffffffff
-
-#define MAX_NUMS   131072
-#define NUM_CELLS  (MAX_NUMS / 32)
-
-typedef struct {
-    u_long   cells[NUM_CELLS];
-} Numlist;
-
-
-Numlist *numlist_create(void);
-Bool     numlist_isempty(Numlist *);
-Bool     numlist_member(Numlist *, u_long);
-u_long   numlist_first(Numlist *);
-u_long   numlist_next(Numlist *, u_long);
-void     numlist_insert(Numlist *, u_long);
-void     numlist_delete(Numlist *, u_long);
-
-
-#endif   /* NUMLIST2__H */
diff --git a/src/libraries/libmisc/pom.c b/src/libraries/libmisc/pom.c
deleted file mode 100644
index 4b26fb243..000000000
--- a/src/libraries/libmisc/pom.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- *  pom.c  --  Calculate the Phase Of the Moon
- *
- *  Written by G|ran ]hlstr|m 1984-04-05, revision 5 1986-03-03
- *
- *  Modified by Thomas Bellman 1991-01-29
- */
-
-#include <sys/types.h>
-#include <time.h>
-#include <math.h>
-#include <stdio.h>
-
-#include "pom.h"
-
-
-#define EXPORT
-
-
-#define RADS	(M_PI/180.0)
-
-#if 0
-static	char		* pmt[] = { "NM", "FQ", "FM", "LQ" };
-#endif
-static	short		  ix;
-static	double		  m;		/* Sun's Mean Anomaly */
-static	double		  mp;		/* Moon's Mean Anomaly */
-static	double		  f;		/* Moon's Argument of Latitude	*/
-static	struct tm	  dt;
-
-
-/* New & Full Moon correction */
-static  double
-mcorr (double	t)
-
-{
-    double	  tmp;
-
-    tmp = (0.1734-3.93E-4*t) * sin(m) + 0.0021 * sin(2.0*m) - 0.4068 * sin(mp);
-    tmp += 0.0161 * sin(2.0*mp) - 0.0004 * sin(3.0*mp) + 0.0104 * sin(2.0*f);
-    tmp += 0.0004 * sin(2.0*f + m) - 0.0051 * sin(m+mp) - 0.0074 * sin(m-mp);
-    tmp -= 0.0004 * sin(2.0*f - m) + 0.0006 * sin(2.0*f + mp);
-    return  tmp += 0.0010 * sin(2.0*f - mp) + 0.0005 * sin(m + 2.0*mp);
-}
-
-
-
-/*  First & Last Quarter correction  */
-static  double
-qcorr (double	t)
-
-{
-    double	  tmp, tmp2;
-
-    tmp = (0.1721 - 0.0004*t) * sin(m) + 0.0021 * sin(2.0*m) - 0.628 * sin(mp);
-    tmp +=  0.0089 * sin(2.0*mp) - 0.0004 * sin(3.0*mp) + 0.0079 * sin(2.0*f);
-    tmp +=  0.0003 * sin(2.0*f + m) - 0.0119 * sin(m+mp) - 0.0047 * sin(m-mp);
-    tmp +=  0.0021 * sin(2.0*f - mp) - 0.0004 * sin(2.0*f - m);
-    tmp += -0.0006 * sin(2.0*f + mp) + 0.0003 * sin(m + 2.0*mp);
-    tmp +=  0.0004 * sin(m - 2.0*mp) - 0.0003 * sin(2.0*m + mp);
-    tmp2 = (0.0028 - 0.0004 * cos (m) + 0.0003 * cos (mp));
-    if (ix == 1)
-	tmp += tmp2;
-    else
-	tmp -= tmp2;
-
-    return  tmp;
-}
-
-
-
-/* When is nearest phase? */
-static  double
-pcon (void)
-
-{
-    double	  frc;
-    double	  year;
-    double	  k;
-    double	  t;
-    double	  tmp;
-    int		  leap;
-
-
-    year = (dt.tm_hour + ((dt.tm_min + (dt.tm_sec / 60.0)) / 60.0)) / 24.0;
-    year += dt.tm_yday;
-
-    /* Leap year? */
-    leap = dt.tm_year + 1900;
-    leap = (leap % 4 == 0  &&  (leap % 100 != 0  ||  leap % 400 == 0));
-
-    /* This year with decimals */
-    year = dt.tm_year + year / (365.0 + leap);
-
-    k = year * 12.3685;
-    k -= (frc = k - floor (k));
-
-    /* Determine nearest phase */
-    for ( ix = 0 ;  frc > ix * 0.25 + 0.125 ;  ix++ )
-	;
-    t = (k += ix * 0.25) / 1236.85;
-    tmp = 2415020.75933 + 29.53058868 * k
-	+ (1.178E-4 - 1.55E-7 * t) * pow (t, 2.0);
-    tmp += 3.3E-4 * sin (166.56*RADS + 132.87*RADS * t
-			 - 9.173E-3*RADS * pow(t, 2.0));
-    m = RADS * fmod (359.2242 + 29.10535608 * k
-		     - (3.47e-6*t + 3.33e-5) * pow (t, 2.0), 360.0);
-    mp = RADS * fmod (306.0253 + 385.81691806 * k
-		      + (1.236e-5*t + 0.0107306) * pow (t, 2.0), 360.0);
-    f = RADS * fmod (21.2964 + 390.67050646 * k
-		     - (2.39e-6*t + 1.6528e-3) * pow (t, 2.0), 360.0);
-    return  tmp += ((ix % 2 == 0) ? mcorr (t) : qcorr (t));
-}
-
-
-
-/* JD at this instant */
-static  double
-dcon (void)
-
-{
-    double	  a, b, d, m, y;
-
-
-    m = dt.tm_mon;
-    y = dt.tm_year + 1900.0;
-    d = dt.tm_mday + dt.tm_hour / 24.0 + dt.tm_min / 1440.0
-	+ dt.tm_sec / 86400.0;
-    if (m <= 2.0)
-    {
-	y -= 1.0;
-	m += 12.0;
-    }
-    a = floor (y/100.0);	/* Gregorian Calendar correction */
-    b = 2.0 - a + floor (a / 4.0);
-    return  (floor (365.25 * y) + floor (30.6001 * (m+1.0)) + d + 1720994.5 + b);
-}
-
-
-
-EXPORT  struct pom
-phase_of_the_moon (struct tm	* when)
-
-{
-    int		  p1, p2, p3, p4;
-    char	  sgn;
-    double	  tmp;
-    struct pom	  result;
-
-
-    dt = *when;
-    dt.tm_mon++;
-    dt.tm_yday++;
-    tmp = pcon() - dcon();
-    sgn = (tmp > 0)  ?  '-'  :  '+';
-    tmp = fabs (tmp);
-    tmp -= (p1 = floor (tmp));
-    tmp = tmp * 24.0 - (p2 = floor (tmp * 24.0));
-    tmp = tmp * 60.0 - (p3 = floor (tmp * 60.0));
-    p4 = floor (tmp * 60.0);
-
-    result.quarter = ix % 4;
-    result.days    = (sgn == '+')  ?  p1  :  -p1;
-    result.hours   = (sgn == '+')  ?  p2  :  -p2;
-    result.minutes = (sgn == '+')  ?  p3  :  -p3;
-    result.seconds = (sgn == '+')  ?  p4  :  -p4;
-
-    return  result;
-}
diff --git a/src/libraries/libmisc/pom.h b/src/libraries/libmisc/pom.h
deleted file mode 100644
index f0f7c32d1..000000000
--- a/src/libraries/libmisc/pom.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  pom.h
- *	Calculate the phase of the moon at any given time.
- *
- *
- *  This file is in the public domain.  No rights reserved.
- */
-
-
-#ifndef POM_H_INCLUDED__
-#define POM_H_INCLUDED__
-
-
-struct	pom {
-	enum { pom_NM, pom_FQ, pom_FM, pom_LQ }
-			  quarter;	/* Nearest quarter */
-	/* Time since nearest quarter.  All fields are negative if
-	 * nearest quarter is in the future.			*/
-	int		  days;
-	int		  hours;
-	int		  minutes;
-	int		  seconds;
-};
-
-
-/*
- *  Calculate the phase of the moon at the time WHEN, which should be
- *  the GMT time.
- */
-extern  struct pom
-phase_of_the_moon (struct tm	* when);
-    
-
-#endif  /* POM_H_INCLUDED__ */
diff --git a/src/libraries/libmisc/s-collat-tabs.c b/src/libraries/libmisc/s-collat-tabs.c
deleted file mode 100644
index b16990a1c..000000000
--- a/src/libraries/libmisc/s-collat-tabs.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  s-collat-tables.c  --  Collating tables used for the s_usr_strcmp()
- *			   routine in s-string.[ch]
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- */
-
-
-#include "s-collat-tabs.h"
-
-
-/*
- *  Collating tables:
- *	swedish_collate_tab:	Swedish text.  "][\}{|" in the right
- *				order.  Upper and lower case letters
- *				are equal.
- *	english_collate_tab:	English text.  Upper and lower case
- *				letters are equal.
- */
-
-
-
-char	swedish_collate_tab [ COLLAT_TAB_SIZE ] =
-    {
-	'\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
-	'\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
-	'\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
-	'\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
-	' ',	'!',	'"',	'#',	'$',	'%',	'&',	'\'',
-	'(',	')',	'*',	'+',	',',	'-',	'.',	'/',
-	'0',	'1',	'2',	'3',	'4',	'5',	'6',	'7',
-	'8',	'9',	':',	';',	'<',	'=',	'>',	'?',
-	'@',	'a',	'b',	'c',	'd',	'e',	'f',	'g',
-	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
-	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
-	'x',	'y',	'z',	'}',	'{',	'|',	'~',	'_',
-	'`',	'a',	'b',	'c',	'd',	'e',	'f',	'g',
-	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
-	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
-	'x',	'y',	'z',	'}',	'{',	'|',	'~',	'',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�'
-    };
-
-
-
-char	english_collate_tab [ COLLAT_TAB_SIZE ] =
-    {
-	'\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
-	'\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
-	'\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
-	'\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
-	' ',	'!',	'"',	'#',	'$',	'%',	'&',	'\'',
-	'(',	')',	'*',	'+',	',',	'-',	'.',	'/',
-	'0',	'1',	'2',	'3',	'4',	'5',	'6',	'7',
-	'8',	'9',	':',	';',	'<',	'=',	'>',	'?',
-	'@',	'a',	'b',	'c',	'd',	'e',	'f',	'g',
-	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
-	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
-	'x',	'y',	'z',	'[',	'\\',	']',	'~',	'_',
-	'`',	'a',	'b',	'c',	'd',	'e',	'f',	'g',
-	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
-	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
-	'x',	'y',	'z',	'{',	'|',	'}',	'~',	'',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�',
-	'�',	'�',	'�',	'�',	'�',	'�',	'�',	'�'
-    };
diff --git a/src/libraries/libmisc/s-collat-tabs.h b/src/libraries/libmisc/s-collat-tabs.h
deleted file mode 100644
index 0c47985f8..000000000
--- a/src/libraries/libmisc/s-collat-tabs.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  s-collat-tables.h  --  Declarations for collating tables
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- *
- *
- *  Any opinions expressed in this code are the author's PERSONAL opinions,
- *  and does NOT, repeat NOT, represent any official standpoint of Lysator,
- *  even if so stated.
- */
-
-
-#include <limits.h>
-
-#define COLLAT_TAB_SIZE	   (UCHAR_MAX+1)
-
-
-extern  char	swedish_collate_tab [ COLLAT_TAB_SIZE ];
-extern  char	english_collate_tab [ COLLAT_TAB_SIZE ];
-#if 0
-extern	char	iso8859_1_collate_tab [ COLLAT_TAB_SIZE ];
-#endif
diff --git a/src/libraries/libmisc/s-string.c b/src/libraries/libmisc/s-string.c
deleted file mode 100644
index 7874163b6..000000000
--- a/src/libraries/libmisc/s-string.c
+++ /dev/null
@@ -1,938 +0,0 @@
-/*
- *  s-string.c  --  Routines for manipulating objects of type String.
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- *
- *
- *  Any opinions expressed in this code are the author's PERSONAL opinions,
- *  and does NOT, repeat NOT, represent any official standpoint of Lysator,
- *  even if so stated.
- */
-
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include <misc-types.h>
-#include "s-collat-tabs.h"
-#include "s-string.h"
-
-
-#define	EXPORT			/* To emphasize objects that are exported */
-
-
-/*  The empty String  */
-EXPORT  const String	EMPTY_STRING	= EMPTY_STRING_i;
-
-
-static free_function	x_free		= NULL;
-static malloc_function	x_malloc	= NULL;
-static realloc_function	x_realloc	= NULL;
-
-
-
-/*
- *  Functions to manipulate strings of type 'String'.
- *  All these functions return a value of type Success, which is
- *  an enum of OK an FAILURE (do NOT trust the order of these!).
- *
- *  All functions automatically allocates (and deallocates) any
- *  necessary storage, using the storage management functions
- *  defined by the s_set_storage_management() call.
- */
-
-
-/*  Macro to reallocate new storage.  Works even if PTR is a
- *  nil pointer.	*/
-#define REALLOC_0(ptr, size)	(((ptr) == NULL)		\
-					? MALLOC_0 (size)	\
-					: (*x_realloc) ((ptr), size))
-
-/*  Free storage.  Works even if PTR is a nil pointer.	*/
-#define FREE_0(ptr)		(((ptr) == NULL)		\
-					? ((void) 0)		\
-					: (*x_free) (ptr))
-
-#define MALLOC_0(size)		((*x_malloc) (size))
-
-
-/*
- *  Set the functions to use for storage management.  These must
- *  be call compatible with the normal functions malloc(),
- *  realloc() and free().
- */
-EXPORT  void
-s_set_storage_management (malloc_function	new_malloc,
-			  realloc_function	new_realloc,
-			  free_function		new_free)
-
-{
-    x_malloc = new_malloc;
-    x_realloc = new_realloc;
-    x_free = new_free;
-}
-
-
-
-/*
- *  Create an object of type String from an ordinary C string.
- */
-EXPORT  Success
-s_crea_str (String	* dest_string,
-	    const char	* c_string    )
-
-{
-    String_size		  length;
-    void		* temp_ptr;	/* To hold result from malloc/realloc
-					 * before actually using it.  */
-
-    length = strlen(c_string);
-
-    temp_ptr = MALLOC_0 (length);
-    if (temp_ptr == NULL)
-    {
-	return FAILURE;
-    }
-
-    FREE_0 (dest_string->string);
-    dest_string->string = temp_ptr;
-    
-    strncpy((char *)dest_string->string, c_string, length);
-    dest_string->len = length;
-
-    return OK;
-}
-
-/*
- * Create a string from a buffer. The contents of the buffer
- * are copied into the new string.
- */
-
-EXPORT  Success
-s_mem_crea_str (String	    	     * dest_string,
-	    	const unsigned char  * buffer,
-	    	String_size   	       length)
-{
-    void		* temp_ptr;	/* To hold result from malloc/realloc
-					 * before actually using it.  */
-
-    temp_ptr = MALLOC_0 (length);
-    if (temp_ptr == NULL)
-    {
-	return FAILURE;
-    }
-
-    FREE_0 (dest_string->string);
-    dest_string->string = temp_ptr;
-    
-    memcpy(dest_string->string, buffer, length);
-    dest_string->len = length;
-
-    return OK;
-}
-
-
-/*
- * Create a string of a given size. The contents of the string
- * are unspecified. The LysKOM-server uses this to get a string
- * of a fixed size into which it can fread() data. This is probably
- * not a good idea since it relies heavily on the implementation
- * of strings. However, by using this function, those places are
- * easy to identify if the implementation should be done differently.
- */
-
-EXPORT  Success
-s_size_crea_str(String      *result,
-		String_size length)
-{
-    void		* temp_ptr;	/* To hold result from malloc/realloc
-					 * before actually using it.  */
-
-    temp_ptr = MALLOC_0 (length);
-    if (temp_ptr == NULL)
-    {
-	return FAILURE;
-    }
-
-    FREE_0 (result->string);
-    result->string = temp_ptr;
-    result->len = length;
-
-    return OK;
-}
-
-
-/*
- *  Return a temporary String from a C string, i e return a struct
- *  pointing to the actual C string.  Suitable for sending a 'String'
- *  object as parameter to a function (IF that function does not modify
- *  it's parameter.  Note that normally String variables should be set
- *  by s_crea_str(), to deallocate the memory used by it.
- */
-EXPORT  String
-s_fcrea_str (const unsigned char   * c_string)
-
-{
-    String	temp;
-
-    /* Cast needed to make compiler not warn about assignment from
-     * const pointer to non-const pointer.  Sigh...		*/
-    temp.string = (unsigned char *)c_string;
-    temp.len = strlen((const char *)c_string);
-    return  temp;
-}
-
-
-
-/*
- *  Free's the space used by a String object.  The object is
- *  set to EMPTY_STRING.
- */
-EXPORT  void
-s_clear (String   * str)
-{
-    FREE_0 (str->string);
-    *str = EMPTY_STRING;
-}
-
-
-
-/*
- *  Copy SOURCE_STRING to DEST_STRING.  Old value of DEST_STRING is
- *  retained if an error was encountered.  If 'foo' is a separate
- *  String, then it is legal to do  's_strcpy(&foo, foo)'.
- */
-EXPORT  Success
-s_strcpy (String	* dest_string,
-	  const String	  source_string)
-
-{
-    void		* temp_ptr;	/* To hold result from malloc/realloc
-					 * before actually using it.  */
-
-    if (s_strlen(source_string) == 0)
-    {
-	s_clear (dest_string);
-	return OK;
-    }
-
-    /* (Re-)allocate memory */
-    temp_ptr = REALLOC_0 (dest_string->string, s_strlen(source_string));
-    if (temp_ptr == NULL)
-	return FAILURE;
-    dest_string->string = temp_ptr;
-    
-    /* Copy the string */
-    memcpy (dest_string->string,
-	    source_string.string,
-	    s_strlen (source_string));
-    dest_string->len = s_strlen (source_string);
-
-    return OK;
-}
-
-
-
-/*
- *  In String STR remove the characters starting with number FIRST
- *  and ending with number LAST, inclusive.  If FIRST > LAST, then
- *  no characters are removed.
- */
-extern  Success
-s_strdel (String	* str,
-	  String_size	  first,
-	  String_size	  last )
-
-{
-    String_size		i;	/* Just an index in a loop */
-
-
-    assert (   first >= 0  &&  first <= s_strlen (*str)
-	    && last >= -1  &&  last < s_strlen (*str));
-
-    for ( i = last + 1 ;  i < s_strlen(*str) ;  i++ )
-	str->string [i-(last-first+1)] = str->string [i];
-
-    str->len -= last-first+1;
-
-    return  OK;
-}
-
-
-
-/*
- *  Append SOURCE_STRING to the end of DEST_STRING.  DEST_STRING is not
- *  changed if an error is encountered.
- */
-EXPORT  Success
-s_strcat (String	* dest_string,
-	  const String	  source_string)
-
-{
-    void		* temp_ptr;	/* To hold result from malloc/realloc
-					 * before actually using it.  */
-
-    /* (Re-)alloc space for new string */
-    temp_ptr = REALLOC_0 (dest_string->string,
-			  dest_string->len + source_string.len);
-    if (temp_ptr == NULL)
-    {
-	return FAILURE;
-    }
-    dest_string->string = temp_ptr;
-
-    /* Append SOURCE_STRING to *DEST_STRING */
-    memcpy (dest_string->string + s_strlen (*dest_string),
-	    source_string.string,
-	    s_strlen (source_string));
-    dest_string->len += source_string.len;
-
-    return OK;
-}
-
-
-
-/*
- *  Extract a substring from SOURCE_STRING, starting with char no
- *  START_CHAR and ending with char no END_CHAR.  First character
- *  is character no 0.  If END_CHAR < START_CHAR, then DEST_STRING
- *  is set to 'EMPTY_STRING'.  If END_CHAR is equal to the macro
- *  'END_OF_STRING', then the substring reaches to the last character
- *  in SOURCE_STRING.
- */
-EXPORT  Success
-s_substr (String	* dest_string,
-	  const String	  source_string,
-	  String_size	  start_char,
-	  String_size	  end_char)
-
-{
-    String_size		  sub_len;	/* Length of substring */
-    void		* temp_ptr;	/* To hold result from malloc/realloc
-					 * before really using it.  */
-
-    if (end_char == END_OF_STRING)
-	end_char = s_strlen(source_string)-1;
-
-    assert (    start_char >= 0  &&  end_char >= -1
-	    &&  start_char <= s_strlen (source_string)
-	    &&  end_char < s_strlen (source_string));
-
-    sub_len = end_char - start_char + 1;
-
-    /* Will the substring be empty? */
-    if (sub_len <= 0)
-    {
-	s_clear (dest_string);	/* Free and set to EMPTY_STRING */
-	return OK;
-    }
-
-    /* (Re-)allocate space for substring */
-    temp_ptr = REALLOC_0(dest_string->string, sub_len);
-    if (temp_ptr == NULL)
-    {
-	return FAILURE;
-    }
-    dest_string->string = temp_ptr;
-
-    /* Copy substring to DEST_STRING */
-    memcpy (dest_string->string,
-	    source_string.string + start_char,
-	    sub_len);
-    dest_string->len = sub_len;
-
-    return OK;
-}
-
-
-
-/*
- *  Fast extraction of a substring.  Returns an object of type
- *  String wich points into SOURCE_STRING.  Thus you should NEVER
- *  modify the result of this function.  (Raw character modifying
- *  is OK if you know what you are doing, but never use anything
- *  that might call free or realloc on it.)  If END_CHAR is equal
- *  to the macro 'END_OF_STRING', then the substring reaches to
- *  the last character in SOURCE_STRING.
- */
-EXPORT  String
-s_fsubstr (const String	  source_string,
-	   String_size	  start_char,
-	   String_size	  end_char	)
-
-{
-    String	sub_string;	/* Substring struct */
-
-
-    if (end_char == END_OF_STRING)
-	end_char = s_strlen(source_string)-1;
-
-    assert (    start_char >= 0  &&  end_char >= -1
-	    &&  start_char <= s_strlen (source_string)
-	    &&  end_char < s_strlen (source_string));
-
-    sub_string.len = end_char - start_char + 1;
-
-    /* Is the substring empty? */
-    if (sub_string.len < 1)
-    {
-	return EMPTY_STRING;
-    }
-
-    sub_string.string = source_string.string + start_char;
-
-    return sub_string;
-}
-
-
-
-/*
- *  Returns -1 if ARG is negative, 0 if 0 and +1 if positive.
- *  Used in the string comparison routines.
- */
-static  int
-sign (int  arg)
-{
-    if (arg < 0)
-	return  -1;
-    else if (arg == 0)
-	return   0;
-    else
-	return  +1;
-}
-
-
-
-/*
- *  Compares two strings.  Returns -1 if STR1 is lexically less
- *  than STR2, +1 if STR1 is greater than STR2, and 0 if they are
- *  equal.
- */
-EXPORT  int
-s_strcmp (String   str1,
-	  String   str2)
-
-{
-    u_int		index;
-    String_size		shortest;	/* Length of the shortest string */
-    int			retval_based_on_lengths;
-
-
-    retval_based_on_lengths = sign(str1.len - str2.len);
-
-    if (str1.len < str2.len)
-	shortest = str1.len;
-    else
-	shortest = str2.len;
-
-    
-    /*  If they point to the same string, then we only have to
-     *  compare the lengths.	*/
-    if (str1.string == str2.string)
-	return  retval_based_on_lengths;
-
-
-    /* Find first diff:ing character (in [index]) */
-    index = 0;
-    while (  (index < shortest)
-	   && (str1.string[index] == str2.string[index]) )
-	index++;
-
-    /* If no diff:ing char, then the shortest is the "smallest" */
-    if (index >= shortest)
-	return  retval_based_on_lengths;
-    else  /* ...else check which character was the "smallest". */
-	return  sign(str1.string[index] - str2.string[index]);
-
-}
-
-
-
-/*
- *  Makes INDEX (type char) positive.  Those that are negative,
- *  result in a positive number above the other numbers.  This
- *  works as if bitcopying a 2's complement nuber to an unsigned
- *  number.
- *
- *  NOTE:  This code might need to be modified for some arhitectures.
- */
-#define POS_INDEX(index)	((u_char)(index))
-
-/*
- *  Compares two strings with user specified collation order.
- *  Returns the same values as s_srcmp().
- *  COLLAT_TAB is a table of collating values for every char.
- */
-EXPORT  int
-s_usr_strcmp (String	 str1,
-	      String     str2,
-	      char     * collat_tab)
-
-{
-    u_int		index;
-    String_size		shortest;	/* Length of the shortest string */
-    int			retval_based_on_lengths;
-
-
-    retval_based_on_lengths = sign(str1.len - str2.len);
-
-    if (str1.len < str2.len)
-	shortest = str1.len;
-    else
-	shortest = str2.len;
-
-    
-    /*  If they point to the same string, then we only have to
-     *  compare the lengths.	*/
-    if (str1.string == str2.string)
-	return  retval_based_on_lengths;
-
-
-    /* Find first diff:ing character (in [index-1]) */
-    index = 0;
-    while (   (index < shortest)
-	   && ( collat_tab [ POS_INDEX( str1.string [index] )]
-	       == collat_tab [ POS_INDEX( str2.string [index] )]) )
-	index++;
-
-    
-    /* If no diff:ing char, then the shortest is the "smallest" */
-    if (index >= shortest)
-	return  retval_based_on_lengths;
-
-    /* ...else check which character was the "smallest". */
-    else
-	return  sign( collat_tab [ POS_INDEX( str1.string[index] )]
-		     - collat_tab [ POS_INDEX( str2.string[index] )] );
-
-}
-
-
-
-/*
- *  Checks if STR1 is the exact beginning of STR2, e g if STR1
- *  is "foobar" and STR2 is "foobarf" then the result is TRUE.
- */
-EXPORT  Bool
-s_strhead (String	str1,
-	   String	str2)
-
-{
-    String_size		i;	/*  Index in comparison loop  */
-
-
-    /*  If STR1 is longer than STR2, then it can't be a head.	*/
-    if (s_strlen(str1) > s_strlen(str2))
-	return  FALSE;
-
-    /*  If they point to the same string, then STR1 is a head
-     *  of STR2.  (We have already compared the lengths.)	*/
-    if (str1.string == str2.string)
-	return  TRUE;
-
-    /*  Check character by character  */
-    for ( i = 0 ;  i < s_strlen(str1) ;  i++)
-	if (str1.string[i] != str2.string[i])
-	    return FALSE;	/* Diff. found, so not head. */
-
-    /*  No differences found  */
-    return  TRUE;
-}
-
-
-
-/*
- *  Checks if STR1 is the exact beginning of STR2, but uses a
- *  user specified collating sequence for comparison (as in
- *  s_usr_strcmp()).
- */
-EXPORT  Bool
-s_usr_strhead (String	str1,
-	       String	str2,
-	       char	collat_tab [ COLLAT_TAB_SIZE ])
-
-{
-    String_size		i;	/*  Index in comparison loop  */
-
-
-    /*  If STR1 is longer than STR2, then it can't be a head.	*/
-    if (s_strlen(str1) > s_strlen(str2))
-	return  FALSE;
-
-    /*  If they point to the same string, then STR1 is a head
-     *  of STR2.  (We have already compared the lengths.)	*/
-    if (str1.string == str2.string)
-	return  TRUE;
-
-    /*  Check character by character  */
-    for ( i = 0 ;  i < s_strlen(str1) ;  i++)
-    {
-	if (  collat_tab [ POS_INDEX( str1.string[i] )]
-	    != collat_tab [ POS_INDEX( str2.string[i] )] )
-	{
-	    return FALSE;	/* Diff. found, so not head. */
-	}
-    }
-    
-    /*  No differences found  */
-    return  TRUE;
-}
-
-
-
-
-/*
- *  From STR strip all trailing characters that can be found
- *  in STRIP_STRING.
- */
-extern  String
-s_strip_trailing (String	  str,
-		  const String	  strip_string)
-
-{
-    while (  s_strlen (str) > 0
-	   && s_strchr (strip_string,
-			str.string[s_strlen(str) - 1], 0) != -1)
-	str.len--;
-    return  str;
-}
-
-
-
-
-/*
- *  Returns the index of the first occurrence in the String STR
- *  of the character CH, starting at position STAR_POS.  Returns
- *  -1 if no occurrence.
- */
-EXPORT  String_size
-s_strchr (const String	  str,
-	  char		  ch,
-	  String_size	  start_pos)
-
-{
-    unsigned char	* ptr;
-
-    assert (start_pos >= 0  &&  start_pos <= s_strlen (str));
-
-    ptr = memchr (str.string + start_pos, ch, s_strlen (str) - start_pos);
-    if (ptr == NULL)
-	return  -1;
-    else
-	return  ptr - str.string;
-}
-
-
-
-/*
- *  Returns the index of the last occurrence in the String STR
- *  of the character CH, starting at position START_POS.  Returns
- *  -1 if no occurrence.
- */
-EXPORT  String_size
-s_strrchr (const String	  str,
-	   char		  ch,
-	   String_size	  start_pos)
-
-{
-    String_size		index;
-
-    if (start_pos == END_OF_STRING)
-	start_pos = s_strlen (str) - 1;
-
-    assert (start_pos >= -1  &&  start_pos < s_strlen (str));
-
-    index = start_pos;
-    while (index >= 0  &&  str.string[index] != ch)
-	index--;
-
-    return  index;	/* This will be -1 if not found. */
-}
-
-
-
-
-/*
- *  Return the index of the first occurrence in the String LOOK_IN
- *  of any of the characters in the String SEARCH_FOR, or -1 if none.
- */
-extern  String_size
-s_strpbrk (const String	  look_in,
-	   const String	  search_for)
-
-{
-    String_size		  i;
-
-    for ( i = 0 ;  i < s_strlen (look_in) ;  i++ )
-	if (s_strchr (search_for, look_in.string[i], 0) != -1)
-	    return  i;
-
-    return  -1;
-}
-
-
-
-
-/*
- *  Find the first character in LOOK_IN that *is* present in
- *  SEARCH_FOR, and return its index, or the length of LOOK_IN if
- *  it contains only characters that are not present in SEARCH_FOR.
- */
-extern  String_size
-s_strcspn (const String	  look_in,
-	   const String	  search_for)
-
-{
-    String_size		  i;
-
-    i = 0;
-    while (  i < s_strlen (look_in)
-	   && s_strchr (search_for, look_in.string[i], 0) == -1)
-	i++;
-    return  i;
-}
-
-
-
-
-/*
- *  Find the first character in LOOK_IN that is *not* present in
- *  SKIP_CHARS, and return its index, or the length of LOOK_IN if
- *  it contains only characters that are present in SKIP_CHARS.
- */
-extern  String_size
-s_strspn (const String	  look_in,
-	  const String	  skip_chars)
-
-{
-    String_size		  i;
-
-    i = 0;
-    while (  i < s_strlen (look_in)
-	   && s_strchr (skip_chars, look_in.string[i], 0) != -1)
-	i++;
-    return  i;
-}
-
-
-
-
-
-/*
- *  Pick out the first token from SOURCE separated by one or more
- *  of the characters in SEPARATORS, starting in position START_POS.
- *
- *  More specifically: start in position START_POS and skip over
- *  separator characters (any of those present in SEPARATORS).
- *  Extract the substring starting with the first non-separator,
- *  and ending the character immediately before the first separator
- *  following.  *start_pos will be the index of the first separator
- *  character after the token.
- *
- *  Note that the return value actually points into SOURCE.  It
- *  is not separately allocated.
- */
-EXPORT  String
-s_strtok (const String	  source,
-	  String_size	* start_pos,
-	  const String	  separators)
-
-{
-    String_size		first_char;	/* First character in token */
-    String_size		end_char;	/* First character after token */
-
-
-    /* Check of parameters - we might save some time on this */
-    if (   (*start_pos >= s_strlen(source))
-	|| s_empty(separators) || s_empty(source) )
-    {
-	return  EMPTY_STRING;
-    }
-
-    /* Skip leading separators */
-    first_char = *start_pos;
-    while (  (first_char < s_strlen(source))
-	   && (s_strchr (separators, source.string[first_char], 0) != -1) )
-	first_char++;
-
-    /* End of source string?  Then we can stop here. */
-    if (first_char >= s_strlen(source))
-    {
-	*start_pos = first_char;
-	return  EMPTY_STRING;
-    }
-
-    /* Find next separator */
-    end_char = first_char;
-    while (  (end_char < s_strlen(source))
-	   && (s_strchr (separators, source.string[end_char], 0) == -1) )
-	end_char++;
-
-    /* OK, we're practically done. */
-    *start_pos = end_char;
-    return  s_fsubstr(source, first_char, end_char-1);
-}
-
-
-
-
-/****************************************************
- *	Misc. routines using our String type.	    *
- ****************************************************/
-
-
-/*
- *  Convert a char to a number in base BASE.
- */
-static  int
-char2digit (const char	ch,
-	    const int	base)
-{
-    int			  index;
-    static  char	* translate_table	=
-				"0123456789abcdefghijklmnopqrstuvwxyz";
-
-    index = 0;
-    while (  (index < base)
-	   && (  translate_table[index]
-	       != (isalpha(ch) ? tolower(ch) : ch)))
-	index++;
-
-    if (index >= base)
-	return  -1;
-    else
-	return  index;
-}
-
-
-
-/*
- *  Convert the String STR to a long, using the base BASE.
- *  Leading blanks are skipped according to isblank() in <ctype.h>.
- *  The index of the first character that couldn't be used to form
- *  the number is returned in *FIRST_ILL_CHAR.  Returns -1 in
- *  *first_ill_char if there was an error in the parameters.
- *  BASE may be in the range 2..36
- */
-#define MAXBASE	36
-EXPORT  long
-s_strtol (const String	  str,
-	  String_size	* first_ill_char,
-	  const int	  base		)
-
-{
-    long		  number	= 0;	/* The result */
-    int			  sign		= 0;	/* Sign o' the times :-) */
-    String_size		  char_no;
-    int			  digit;
-
-
-    assert (base >= 2  &&  base <= MAXBASE);
-
-    if (s_empty(str))
-    {
-	*first_ill_char = -1;
-	return  0;
-    }
-
-
-    /* Skip all blanks */
-    char_no = 0;
-    while ( (char_no < s_strlen(str)) && isspace(str.string[char_no]) )
-	char_no++;
-
-    /* Find any sign character (+ or -) */
-    if (str.string[char_no] == '+')
-    {
-	sign = +1;
-	char_no++;
-    }
-    else if (str.string[char_no] == '-')
-    {
-	sign = -1;
-	char_no++;
-    }
-
-    while (   (char_no < s_strlen(str))
-	   && ((digit = char2digit(str.string[char_no], base)) != -1) )
-    {
-	number = number * base + digit;
-	char_no++;
-    }
-
-    *first_ill_char = char_no++;
-    if (sign != -1)
-	return  number;
-    else
-	return  -number;
-}
-
-
-
-
-/************************************************
- *	Input/Output routines for String	*
- ************************************************/
-
-
-
-/*
- *  Outputs the string STR on the stream STREAM.  No information
- *  about the length of the string is output.
- */
-EXPORT  Success
-s_fputs (FILE		* stream,
-	 const String	  str)
-
-{
-    String_size		i;
-
-    for ( i = 0 ;  i < str.len ;  i++ )
-	putc (str.string[i], stream);
-
-    return OK;
-}
-
-
-/*
- * Create an ordinary C string from a String.
- * The pointer returned will point to a '\0'-terminated character
- * array which is obtained with the malloc-function supplied to
- * s_set_storage_management(). It should be freed by the caller.
- * NULL is returned if there is an error. The String may contain
- * '\0's, but the resulting string will be truncated at the first
- * '\n'. Thou shalt not depend on this behaviour. Later versions
- * might substitute "foobar" for '\0's.
- */
-
-EXPORT  char *
-s_crea_c_str(const String  source)
-{
-    char *dest;
-
-    dest = MALLOC_0( 1 + s_strlen(source) );
-
-    if ( dest == NULL )
-	return NULL;
-
-    memcpy(dest, source.string, s_strlen(source));
-    dest[ s_strlen(source) ] = '\0';
-    return dest;
-}
diff --git a/src/libraries/libmisc/s-string.h b/src/libraries/libmisc/s-string.h
deleted file mode 100644
index 18a5b9622..000000000
--- a/src/libraries/libmisc/s-string.h
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- *  s-string.h
- *		Our own string type.  Definition of string type,
- *		and functions to manipulate these strings.
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- */
-
-
-
-#ifndef  S_STRING_H_ALREADY_INCLUDED__
-#define  S_STRING_H_ALREADY_INCLUDED__
-
-
-#include <limits.h>
-#include <stdio.h>
-#include <stddef.h>
-
-#include <misc-types.h>
-
-#include "s-collat-tabs.h"
-
-
-typedef 	long		String_size;
-#define		END_OF_STRING	LONG_MAX
-
-
-/*
- *  All objects of type String *must* be initialized to EMPTY_STRING
- *  before using any destructive function on them.  If you only use
- *  non-destructive functions (s_strlen(), s_strcmp(), ...), you can
- *  set them with
- *	str = s_fcrea_str("Hej hopp i lingonskogen");
- *  But the value of this may *not* be used in any destructive call,
- *  since str.string points to read-only memory.
-
- *  Note also that you need to call s_free() on any auto variables
- *  of type String before exiting the block they are declared in,
- *  since otherwise the memory they use will still be allocated.
- *  This is of course the same rules as for normal pointers.
-
- *  To make it possible for people to use their own storage
- *  management routines, you can set the functions to use for
- *  malloc(), realloc() and free() with the
- *  s_set_storage_management() function.  This MUST be called
- *  before using any of the other functions, even if you want to
- *  use the normal malloc(), realloc() and free().
-
- *  Terminology:
- *  --	A "separate" String is an object that points to some memory
- *	that is somehow obtained from malloc() or its cousins.  This
- *	means that it is legal to free() or realloc() it.
- */
-
-
-typedef struct {
-	String_size	  len;
-	unsigned char	* string;
-} String;
-
-/*
- *  Note that the first character is String.string[0], and the last
- *  character is String.string[String.len-1]
- */
-
-
-/*  This is the representation of the empty String  */
-#define			EMPTY_STRING_i		((String) { 0, NULL })
-extern  const String	EMPTY_STRING;
-
-
-
-/*
- *  Functions to manipulate strings of type 'String'.
- *  All these functions return a value of type Success, which is
- *  an enum of OK an FAILURE (do NOT trust the order of these!).
- *
- *  All functions automatically allocates (and deallocates) any
- *  necessary storage.
- */
-
-
-
-typedef void	(*free_function) (void *);
-typedef void  * (*malloc_function) (size_t);
-typedef void  * (*realloc_function) (void *, size_t);
-
-/*
- *  Set the functions to use for storage management.  These must
- *  be call compatible with the normal functions malloc(),
- *  realloc() and free().
- */
-extern  void
-s_set_storage_management (malloc_function	new_malloc,
-			  realloc_function	new_realloc,
-			  free_function		new_free);
-
-
-/*
- *  Returns the number of characters in a String
- */
-#define s_strlen(str)	((str).len)
-
-
-
-/*
- *  Create an object of type String from an ordinary C string.
- */
-extern  Success
-s_crea_str (String	* dest_string,
-	    const char	* c_string    );
-
-
-/*
- * Create a string from a buffer. The contents of the buffer
- * are copied into the new string.
- */
-
-extern  Success
-s_mem_crea_str (String	    	     * dest_string,
-	    	const unsigned char  * buffer,
-	    	String_size   	       length);
-
-/*
- * Create a string of a given size. The contents of the string
- * are unspecified. The LysKOM-server uses this to get a string
- * of a fixed size into which it can fread() data. This is probably
- * not a good idea since it relies heavily on the implementation
- * of strings. However, by using this function, those places are
- * easy to identify if the implementation should be done differently.
- */
-
-extern  Success
-s_size_crea_str(String      *result,
-		String_size length);
-
-/*
- *  Return a temporary String from a C string, i e return a struct
- *  pointing to the actual C string.  Suitable for sending a 'String'
- *  object as parameter to a function (IF that function does not modify
- *  it's parameter.  Note that normally String variables should be set
- *  by s_crea_str(), to deallocate the memory used by it.
- */
-extern  String
-s_fcrea_str (const unsigned char  * c_string);
-
-
-
-/*
- *  Free's the space used by a String object.  The object is
- *  set to EMPTY_STRING.
- */
-extern  void
-s_clear (String   * str);
-
-
-/*
- * Create an ordinary C string from a String.
- * The pointer returned will point to a '\0'-terminated character
- * array which is obtained with the malloc-function supplied to
- * s_set_storage_management(). It should be freed by the caller.
- * NULL is returned if there is an error. The String may contain
- * '\0's, but the resulting string will be truncated at the first
- * '\n'. Thou shalt not depend on this behaviour. Later versions
- * might substitute "foobar" for '\0's.
- */
-
-
-extern  char *
-s_crea_c_str(const String  source);
-
-
-
-/*
- *  Copy SOURCE_STRING to DEST_STRING.  Old value of DEST_STRING is
- *  retained if an error was encountered.  Note that it is never
- *  legal to do 's_strcpy(&foo, foo)', since the string 'foo' is
- *  pointing to is reallocated before it is read.
- */
-extern  Success
-s_strcpy (String	* dest_string,
-	  const String	  source_string);
-
-
-
-/*
- *  In String STR remove the characters starting with number FIRST
- *  and ending with number LAST, inclusive.  If FIRST > LAST, then
- *  no characters are removed.
- */
-extern  Success
-s_strdel (String	* str,
-	  String_size	  first,
-	  String_size	  last );
-
-
-
-/*
- *  Append SOURCE_STRING to the end of DEST_STRING.  DEST_STRING is not
- *  changed if an error is encountered.
- */
-extern  Success
-s_strcat (String	* dest_string,
-	  const String	  source_string);
-
-
-
-/*
- *  Extract a substring from SOURCE_STRING, starting with char no
- *  START_CHAR and ending with char no END_CHAR.  First character
- *  is character no 0.  If END_CHAR < START_CHAR, then DEST_STRING
- *  is set to 'EMPTY_STRING'.  If END_CHAR is equal to the macro
- *  'END_OF_STRING', then the substring reaches to the last character
- *  in SOURCE_STRING.
- */
-extern  Success
-s_substr (String	* dest_string,
-	  const String	  source_string,
-	  String_size	  start_char,
-	  String_size	  end_char);
-
-
-
-/*
- *  Fast extraction of a substring.  Returns an object of type
- *  String wich points into SOURCE_STRING.  Thus you should NEVER
- *  modify the result of this function.  (Raw character modifying
- *  is OK if you know what you are doing, but never use anything
- *  that might call free or realloc on it.)  If END_CHAR is equal
- *  to the macro 'END_OF_STRING', then the substring reaches to
- *  the last character in SOURCE_STRING.
- */
-extern  String
-s_fsubstr (const String	  source_string,
-	   String_size	  start_char,
-	   String_size	  end_char	);
-
-
-
-/*  Check if a string is the empty string. Returns TRUE or FALSE.
- */
-#define s_empty(str) (((str).len == 0) ? TRUE : FALSE)
-
-
-/*  Check if two strings are equal.
- */
-#define s_streq(str1, str2)	(s_strcmp(str1, str2) == 0)
-#define s_usr_streq(str1, str2, collat_tab)	\
-	(s_usr_strcmp(str1, str2, collat_tab) == 0)
-
-
-
-/*
- *  Compares two strings.  Returns -1 if STR1 is lexically less
- *  than STR2, +1 if STR1 is greater than STR2, and 0 if they are
- *  equal.
- */
-extern  int
-s_strcmp (String   str1,
-	  String   str2);
-
-
-
-/*
- *  Compares two strings with user specified collation order.
- *  Returns the same values as s_strcmp().
- *  COLLAT_TAB is a table of collating values for every char.
- */
-extern  int
-s_usr_strcmp (String	str1,
-	      String	str2,
-	      char	collat_tab [ COLLAT_TAB_SIZE ]);
-
-
-
-/*
- *  Checks if STR1 is the exact beginning of STR2, e g if STR1
- *  is "foobar" and STR2 is "foobarf" then the result is TRUE.
- */
-extern  Bool
-s_strhead (String	str1,
-	   String	str2);
-
-
-
-/*
- *  Checks if STR1 is the exact beginning of STR2, but uses a
- *  user specified collating sequence for comparison (as in
- *  s_usr_strcmp()).
- */
-extern  Bool
-s_usr_strhead (String	str1,
-	       String	str2,
-	       char	collat_tab [ COLLAT_TAB_SIZE ]);
-
-
-
-/*
- *  From STR strip all trailing characters that can be found
- *  in STRIP_STRING.  STR isn't altered in any way.  The returned
- *  object points to the same string as STR, but with a possibly
- *  shorter length.  The pointer is unchanged *even* if the length
- *  should be 0, which means you don't "lose" the storage but can
- *  free it with s_free().
- */
-extern  String
-s_strip_trailing (String	  str,
-		  const String	  strip_string);
-
-
-
-/*
- *  Returns the index of the first occurrence in the String STR
- *  of the character CH.  Returns -1 if no occurrence.
- */
-extern  String_size
-s_strchr (const String	  str,
-	  char		  ch,
-	  String_size	  start_pos);
-
-
-
-/*
- *  Returns the index of the last occurrence in the String STR
- *  of the character CH.  Returns -1 if no occurrence.
- */
-extern  String_size
-s_strrchr (const String	  str,
-	   char		  ch,
-	   String_size	  start_pos);
-
-
-
-/*
- *  Return the index of the first occurrence in the String LOOK_IN
- *  of any of the characters in the String SEARCH_FOR, or -1 if none.
- */
-extern  String_size
-s_strpbrk (const String	  look_in,
-	   const String	  search_for);
-
-
-
-/*
- *  Find the first character in LOOK_IN that *is* present in
- *  SEARCH_FOR, and return its index, or the length of LOOK_IN if
- *  it contains only characters that are not present in SEARCH_FOR.
- */
-extern  String_size
-s_strcspn (const String	  look_in,
-	   const String	  search_for);
-
-
-
-/*
- *  Find the first character in LOOK_IN that is *not* present in
- *  SKLIP_CHARS, and return its index, or the length of LOOK_IN if
- *  it contains only characters that are present in SKIP_CHARS.
- */
-extern  String_size
-s_strspn (const String	  look_in,
-	  const String	  skip_chars);
-
-
-
-/*
- *  Pick out the first token from SOURCE separated by one or more
- *  of the characters in SEPARATORS, starting in position START_POS.
- *
- *  More specifically: start in position START_POS and skip over
- *  separator characters (any of those present in SEPARATORS).
- *  Extract the substring starting with the first non-separator,
- *  and ending the character immediately before the first separator
- *  following.  *start_pos will be the index of the first separator
- *  character after the token.
- *
- *  Note that the return value actually points into SOURCE.  It
- *  is not separately allocated.
- */
-extern  String
-s_strtok (const String	  source,
-	  String_size	* start_pos,
-	  const String	  separators);
-
-
-
-
-/****************************************************
- *	Misc. routines using our String type.	    *
- ****************************************************/
-
-
-/*
- *  Convert the String STR to a long, using the base BASE.
- *  Leading blanks are skipped according to isblank() in <ctype.h>.
- *  The index of the first character that couldn't be used to form
- *  the number is returned in *FIRST_ILL_CHAR.  Returns -1 in
- *  *first_ill_char if there was an error in the parameters.
- *  BASE may be in the range 2..36
- */
-extern  long
-s_strtol (const String	  str,
-	  String_size	* first_ill_char,
-	  const int	  base		);
-
-
-
-
-/************************************************
- *	Input/Output routines for String	*
- ************************************************/
-
-
-
-/*
- *  Outputs the string STR on the stream STREAM.  No information
- *  about the length of the string is output.
- */
-extern Success
-s_fputs (FILE		* stream,
-	 const String	  str);
-
-
-
-/*
- *  Outputs the string STR on stdout.  No information
- *  about the length of the string is output.
- */
-#define s_puts(str) s_fputs(stdout, str)
-
-
-#endif  /*  _S_STRING_H_ALREADY_INCLUDED__  */
diff --git a/src/libraries/libmisc/testnumlist b/src/libraries/libmisc/testnumlist
deleted file mode 100755
index 103245d0a3816fd38dda3481d15c1add2871998a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 32768
zcmZo*V&rCEP+)*y1_lNONe%`E1&{!U!{Gaafk8#w{XGMV64TR0&(9Jp%4Zmu7!G*t
zWMEKYOJ`tUOJrcs@(A$=)@SkqiOm3!Y8LnYF!1Oz`0Zq1V#tW-hq4O%!v3G|cy7Sp
zQN_5%qk;iMclqsNG`s(Yfq{WT*Wv#Mj|v6_kG%gU^cnniG1`E|1$Y`j&P(TT{KZ(7
zz`$t2lgG&Y|5Vxs6&nTy`Ttke{XfIh^#30N16vaV69a<+(}i{aFI-sn|B6QyV-m;~
zeZBu5^sN|Y=vy%^&}RUN`0Zji12$Vi*Wv#QeZBu@plT}gtr#ox_5NP~oALtW3Wh}x
zm1+!A*8M-D&!nLD|HTCmi@|Rf!vwG#k4F`w63ASSDu$DOyBN{}`gI-tzwui4|4JH5
zM1KNUPM<;FictcL_5NSEw(kE0eP+L13@%_3WE_9}JE80G|Br4ZD0Kh-(5+&~`TxZu
z@Ba&r3I;}ny#FsQzWaa2Z$d!7&wU0Szc{~Ag?t7cj|v9X1Q~^V1{seE2KNLZsF-I0
zheAGsfJX%bv!6pMlV7R6ghzl!1p^b<jTH<meh&II3=9nQ3@jki{Tx8yre9iIq@R<S
zq@R<bSDeqFpORXpUzJ*v4^9RW$wegwRtkCf3aHAs7#J8-A#$h^3b}~|1(|v23TcU%
zIi*FZAcYLV5S1WPV5W01G%zqQH83y;F)%Q&GcYi)g6(7Q`^mt>PysSr)ihK!S%*OZ
z0(2Ps!v6mV-pRnk$m0bjbA=Qt8JHLa1okjQ2Z2Nc5^@YI8JHMlm>d`yyd2U!6hJ&4
zmxc`>S&1AAgnF=y092P;fe2dz0~5m!eFlgMrv?E5eTKyU42*Y60{j!i5b_=s4AEfm
zm;isjLZ@~A{}i!oTKE4?Zk<9N1Ba5{|38~1<ivs43VQ$l=oav>{Qse#_x}e|!vO{c
z2A&271_p*SmIAv3rUC_h28fLP|NsACY=|mQvQJ|vuz{%ZsQUK>Wapg=_x>;lB=C4t
z{d)`MABgY|TKE4?0>l3r9N`iR^&zq05=(5j+=;;mmsqfyTmt-YxP=SqmOPX=@&en4
zh$AaV3<&ID;7Z^F%MlSvx6fg?h707H+uH*CK{+NTvA85YuQXRdLBUo*HI$11ERdO(
zl3D>3@C*C@2NY}i8VnpBRsS!5btgbY1U#z#p9hQhfkboz{{I2Rgx9+Nf6~SD_5S}!
zWcZt+koW(OZU%$I|34A_2~X%B2DeUO4})8qAYtH|TToJ|kXM?UlUZD1#lWSStQyLo
z8mf?)SDac@lA6K=;-sYJq=MO@c}1zo`RRF?RjDZo$@#gtiFqkj3aZImpj`MN@jn9t
z(+gdP|9?EH{;vRq%q<s4IQ-k;wC?|p0DrG_|9_-0FdQoQbfHh5q2N1+^r-sZ4OS}v
zsv`vS{(t9TU`R>#0g-upJPZt6=|wyY3<~Kv2{}9r44LU1JPZtl>0t?R`g;FAfzAKV
zz`%A6#Pg{7?+P;O<{q#(!#{_6e;7m(d_Zzwk^c+~Ts<J3N7a7~u*ykbafW|lV3kTm
zjJl5he<VmHNPt}8c|f1Rqv}66)!fVo@K0c1U`k;4Z{^egVu8|7SY}a4X=08-Zfb6R
zQKdp^MMh$2aY<?l11LoPcvLXRfNhBZg-Qg-|9{eCJgWYmD$szHEns;QFsT;c4@xgi
z6TsvO1_@AU0ka8|7WJ9@3SntYMeqNgE$bL~@?}6GAeBm>vWDSlqvA#h1|F7RP#JIw
zBFDg^xQ;=9hXuq7nxLZh{|CtJAQM5guV0~V9)k!trSm8V1UGD0_y146f<hhx57<;a
z1|AiLr%jidlpF&*6({nrfJ>K4Ao<`4Aku3>TA0^527xp=koig=eJdFxKy0rGX&fNh
zX$1pIf|^1eg8)cYF_S?8BCn>wz_M)}15X+kNR?t9g8&1Iz8(V)C^T*uMELu>W8nG!
z1?tux`b>!o|5kxQ5)?itCh;id{r|%tp_|7b@c#$MO&~vRnUEs~QmMc+VI9O~CB6SY
z6gSGSfc@|z;TlL5WR8m9lywXO3QZuL3LsV<1BZ$R0}Cj8VQ%~Xhk->!5AGUJ+=_tQ
zdA$MTB1GK&eTN#i*CW8HywKv71!Q;8e?><I4p1l~Vwr&f6c%0+!VeTN9%xixK*;?6
zqR*tS$H0-uz?h@!@c&1If64zX>;C^p=TXsP-~q9cm=f5)Y4Z)p3{Z&#E{zx%pg#To
zM?vsugMtAE15*R2e%Y{&fhU!LVU^Rm|6f4v0r_vsgd7Hj86cj5-v2KO20SbXwaF0E
z`%q<(Y9|L&8JHbON+3Tf>HYumwDCftf<u6Zf&jwQRF(q91dE_`|Gy-N!St&b@IXQz
zBqsxwWB4Bjl7*C}2@L<$z&>SC(fj`annM0SLg(Ke1%?QJuZDECg8vCN309!6PzX@c
zU|?Zt1i47p5uDaJz-b1YK0!H0F_3`=q|#{xg8<02NZ}4MHwDRDwFDKAYTXP57LaNG
z|0w05hc1!{U-X$ks=@KJf`KEAff3Bt&0ydG>1N>2&48rb|9?QWKP1$V!qo=kB2enZ
z7JkW6FtdZ26rDiniGe4mA%TH$LjowT{s>wJ$`k+pK=XtFNHy5CdjEf@81k?%HGx6}
ztTT@R6e>R$1VCyOG#EG%7#On<p$<w-X+j{mlK&v}1^*Km7`+lqKq4R$RWuneP5Xls
zu6Ya`P*X)fdO#^OXdMF&$lP=WhF>6?K;~dgrROkG=^l`J%v73c0WuqGj^6(-SbYd}
zlVaZgFGzl^Lp2X6{5_!Ik3Ic@N;VF~JO&;HaB2dlD{xwZny<&elb{5Si!acWYz49j
zo|2hB;mClTlHWkm3nY{wsrqk)uEYN?5&m1&{r{3)1Wrlo{(niz0QnUZj^Hqi0+|c;
zIc7dLa$5KQ14tf}W427lQ3A0Q^!|T<q&83*0G9_W2@H%8LF@j1NVo)20d?g9usxvE
z{sUZ#8zeIPlv4ngRiNCXz@Y5Fz@pFqQl$`3!U!%)ITQlGp#n0INg?n552d{SKTzXV
zNsoaixN%cM8Yo22<RRe?ZX3%W>jwFq;}C<KViO0bbX)<FD`D9(AvX=gg4qEzc>@PS
zngyn~3M0oM26>PPAURN;Q*uxcM3~IO5;QSE1X)gT9Rm+o)GU$VhYG~!iXcCO{l&nc
zn90BbsnrxR7+ByTkiozL3j-z&P<Ud7csj^;pnMOF3537XnG!%@cL7x&L>}B5FhP|8
z#UaSwL7)(ofXP99C9l}T12V17Yu*13`5`b_SbYF76&%{2@B+IBCI>SY98*#VolujZ
zF~O(;k^#pA0|Pjv=?46NqoVi!%@&Z2Fkij_rB5Z~cFLQCTVOZ2f%JpI=V=4T7r~92
zK(S|lE{YO&V0R+i!NZaOF0Y{Nm=F1W(46}LUUKSzO2-Wo(%@kS)eR0G?5b55K<Q1P
zDS;2>7D#FUsa9|ZnvkFY9xu@Q53MP_2SL^S0i`O4+MtP`_ARJRP|^GU0$O9e@OW+y
z&O^vK{bwIiPKVX)Uy{ISfdx|Q1pNO4YEgspJOjfykZqt)Ma^5_+|0l*2QA+-Fm!>`
zgTfi)^DP^ASkePvB9O8Gk`}-z44xJsGN6<IGB-&9qytn+fXqRaOJPc2O0WURW6CA7
zBrq^1fb=CW{Lj(N`~L@0H$h7ohW~mA49u`r1X6zRYDklThVc(jiycxXezgPjxDptc
z;qij%k~BzK(EI-(cmt^Q3$9(Erh<F|a-)*o{|`?al?)^pAgzN<4QU3LHhsAQiEB{V
z8Qi4n^#29Z29OClED#qk^?=L*`4>6QfI=!Q10fT%frA0YL%0+qg2fd&SX=>4%?b``
zARjeDTwnup0T;*|bQeJLQ9~L$Zz1dj$$?7>Er{PVK&G}pO!Z-bh-vBl{{Rt*0hJxg
zV0J)Efus{~nE~o=fb)C_^OgxYE+vehJfABCa!*KuJ_91ozL<gYffCer&>ZsxoSq=5
z0F+)qYEbP0g*M2=;4%nHss!8d0c1}i!zXBL>FE9c5Y!g3AqNyjJP8a8&p^I{gf(hA
z6l5|uESzwu0FT9dfcYhn;Zp%frGkSV$d2~V4K*-3nn3PW5eNdMk~a|lZ&>&LO&+Yi
zeFGW~0`;hroGx`LIYxr}RKe^1ze%_RG7-gfpxUtkR{9{zmhfC@P;gQJmt|mid4(pB
zyn;i>1fO>dfBs(pl`sqp3``7J3=AwH3``6~3=A9~x{85;3q&_DFz|!uE(Qi+5Iu>3
zK?p?8Vqo9{(Tf-uBtY~k1_p5uy@`QA3`Fl@V2~66n+zGD0}bU#LPqHr_!t-%c%f|2
z=p7FO0|N^K0|Pe$0|O%i0|O@m0|PT?Y!^DR2hz*Nz`!656$5DnsR5Y*(jy2O9%Eo&
z;Ada}n=Jrk3o|e<fY>q&3=AMOpwU7Q7Gq#w0Lg*e2g0HZ3=AMF%fP?@l9PbiCC$LV
z0Afpl2Dm|%GB7ZJ*dQiI4n%{@mSbRG0O<wsL2MAsz{<eh!@yt#($CJ$!1j=ViMayg
zK28SKGf=iLD+4PZblhB$k%4&uSR(_2JUausC1`Y&fq_Ajm4UgAfkDlJfq_Avm4P{l
zfk9~o0|SFKBLmwbsCp-M2G%0b2rvT!gEu1s3n;6Bq=H!)n3q7+$FnjpK4M@{+Qh)X
zP|VK2tOpviWME*ZWMp7U11V-;U}$1w-~hQ7#O-2bU{PRTPzA-+OjZWAjSLK$Y77hv
zD;XJBKyd_8v!0QG9b_Jey^WQDeGdbJZVLkg!!cF{Hctiy!yE<%hHH!rY^y;E7#JAt
zF*2|&fwG@7GO*o%vfnW>Fjqp^UsxH~y%`uZ8yFZESy>s_Ll_t|XE87^in1~=_AoGL
z3o$S-Dzh>$r!g>S?P6eHG-737+{VD59TJ~fl3G#15TBZoSdz#PpPHA#P+XE&1QMyp
zEMbU`cZu|K^!0RRh|f*T%!A0qr{&})g5*-cN>cO6GK=!_7<`M%GfR>)7}CrvEG!J;
zON&!e7(hdSpwX}Ry!@2Z_=2L$JdnQ3{3M3>__Unjq|!77h-ex@DO447+$=u1C^fMp
zl_9>Mw4|6JzBoBC4@oU#C=H<(GMWZ*Y)(#oGDCbC*swH)_{5}qkf+j$Qd1GCGmBF}
zLv#p%+|=Bp)FK2wC$YE$!Ar|5Lgway0uDYB5Aii9$$tUW?a;i$kPMBWQED^<MnhmU
z1V%$(M27$~0}}%e0~3P^{!oy7!oVPTg@K77hJgt*3?q7hfk8}zfk7O$R)C#>L1GF6
z1ET|UEkOdP-Q)KYVrt_5|NsAgV_*Q&?-&@t^fLw~Fny1K8BAYeU;)$T7+AsdF$Oj;
zy^nz%OmAc00MqLjIKlKX22gtvY=MJ@vZilxQHh~mv4WwVnSzCdzJZaxfrWx|enDlC
zf}y2_sX}mRo`P>?GIUBCtPMfHT0#gB1_mZ9f^1C4Dn{9(Aut*OqaiRF0;3@?8Umvs
zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF
z0;3@?SVDjWv>+2SR}Wg#2wJ=eUB@U2VT0Ew%0k(ob&c9cY|9j|FO)#y?$9-6AdyTY
zb~O@v5fXbh68k0+`#XZoD2T*1Mq-B{v5S$|{YdPENbD_0>@!I08wfTN8xq?LiS35O
z4nktbBC(PD%T$CUj^uZyRwVHWNbK22?4?NTO-SthNbIvn?CVJEM@a0qNbDa7HZvm<
zn;VHOio}*hVml+T{gBv^NbC$Gb|DhG3W?o}#O^_2Peo$SLt?K)Vk5;J^8+OD*9bNX
zQrxkqA&DcWNd^}N25IQJSrA*Efk9~-D6zVL7py3|K-r2649Wpewh{w_atxHM!oZ-M
z1!b!-FevYWvK1H@l#fB#nhXre=b&sY1_qTVC|jF>LFEMl14|r|+mO;K%SnVdD<2YD
z9<nG0wAPo^43x<r>!w-lKx+Q~|Nn=9fz=7h{=vY&>H%7z4_W)n>iGa<IRldih;m_I
zFodoF2Kn8Dfk73tej3C!WnfSRTjRpOV8+0pY6ewr&cL8*2W49@FsQ=Jv1DLSg@unb
z1A}TDRE-S-gX$Xw239YyVc_+~tT9M#PKUY^<mNnxJDG|Y7+CWm?qv3Xn&SjrBMow!
z8v}!y4OHBnfkDj;%JyJjP=mR_i-AEc0xIs!z@P?;FMkFGHSl_97Y2p^1_m|Ii5DO<
zgBTdp)<D$<Gcc&Z;xUAQLG1)oJd}Y!?E;h?!N8z)4a$yWU{HGkWk)eEsC|O6qZt^~
zenHuB3=HZZCdjUM1_pI-@#?|=T6U|>0g`ZGU`S(NPzSGFa$#UdXJAkVtvv^+&t_my
z2d&Kpv2z$0)O8pbSPLNG30gPKT7eXXbx<}a-n$^-$vlUFfwdbd{+)q=6`a5R|NsAq
zfq`{4RLwC42G%){FlT9EU|^jKW%n>Ju+D>&?dk>$46G}V*xMlGJXrhy$b67L7#LWQ
z${beM8e;|q1~zGg8a5LoHd6V?R)8elg~VQi#6FM2euH4Mb0D#$kl4CNY*!?9AQHPC
ziM<|)ja0_6pGFeDhQvnlFFR8C!;a*4_J0WV9GpmO5hS)85?dRIZGpr_s&_a7ki?^r
z*l9>?q_UR-sqE!wK~mF)#GZ!4-h;$Gj>Nu%#D0jxeuc#TjKuzfU~{q}v60F&PH`l0
zB_uXd+;Jk+FPtezYLMcNb3T$dQkvwv4o$aSpfu_N&W!3XwiW|}x*t?rn}I<cR#xaR
zFsOr*xC;Y=E(3!)XnzMN4;nBqsDrJ6l%MKtP`$<s4C;MQwh04+`ZNXxPNek7g;a-f
zg@X+MDQ4iBgT!77$=4vaaUBJTL&|fmGmw1BAjiPKbrzC0LFEP4IjFy8fsArtU~pn!
zP=~Qy85q<TLB-t|7}U2w*&y*#P_{b*gF38C^I%|5zXuifWMEK#!oa}w9O|A~3=G_`
z4J;fC4BXt%GMtBjfm;O17GPlD2Ip~zo4MtoZZ2S8;8uXTc?$yrw<6TdZ=iNXGBBva
z*s%-@>ffN^aSRL^u<|gLfk6Z86c+}Dcm@UyEvT9#1_liSC_9;fK?Agp1{6mr3=A5u
zdMcHHK?4@oX$%Y+K~VJ>3=A5uxXxr?(16wBSquysu(-})V9;oSs?TF!(CA}e;5G+4
z1ng$+0I1(VVG<2xgTf>Q$_9l=5tJ>$z`zY|`$5B}9vVJJ7#O%4AmPIp$H2hd2ninz
z&^{oLUuqZ_;Oqtl290@8_cSsvXe@)Wn-~~0VDa0+z@V`YD&ES#paF|tkoXIzcsm1w
z#ycpxgMmTgAC%q2z@Q1Mo4OeoG(r2PKyK(^V9=CfVBnq#@jJ*p+-soz0{MM2lnwIx
z9w-~+cce7TeG!_Te=sm`UxoOcF^_?P`x?~mF!#)a?nMIGJBNWm6BgHV85lHS@jH)!
zK@+?W%7uYpJ_Cbh2-N+H7#K8Rak`j+K{E*|zJ!566BfVA7#K85pyJCJ7&L1b7`U%P
z`~}(r#SJdUpmFp8>ds#b4BQ_f?qq_sNkDt1Kwbj5a}xuDCTMRIh`pJCL30`d1NSGW
znGFmKJZ#V~fz|c<Ap4#eK<bY$Fld6MT^JaSGB9Yu+9Agn7&H$--Fbq6K@-*vImy7F
z35(NH3=Ep!eO4|E45t|wG+}w?90P+E%&zkc3|ipz*e(nVmlzndU~P#j3=CSZFucmZ
zpj8I7>ly=tRuz<egMmQ{=Es{13|f<*;-?uHw5CDX_ZS$oU}^FJ1A`XK{SO%!v^Fs?
z@bE&zVHN`ej{?}E3=A9$3_R*kHV*>>j~>VpNSO1OLfJnU7<g=;>@N%qJPwe!U@Bl>
z;Bkb+1v4yfet_&31Bd5l1_muy`v1bfpapAte`8?Kx&n3ccLoM6SYG(Sz@P<dv;AaX
z(1PWK-wX`eu)Oe>fkB&(fq};f;up}~G@f9n`$2w*g1Yk$0|QSI#GTB23=BNUP<KMh
zRnWP5pgnFNcQW!ZFldWG+{4Jvz@QC{7e+w_25lXvxDW$_Hni={D8j&?9l*fAlLB!A
z$Q+&$BsU<HEj-OoH#}ot;Aw%l0kq!_Y_9@nKONM3bp{4)Xn%xJgMmRCnnxHl85p#o
zd4y4mfkC?ts$Q3YK^s~wG3qfeXhZu-jQR`=+DD*j3>g@-q3M&+lz~AT8s>~<3=G=P
zw907Cz@QCnGc#H+Fla-=oY9hjK?j;{8SNMtbfD!AqdfzI4tVdS3wSSq4mb#07#JNH
z7<BZY_Bt~#=)l6tg@Hi_nok*B85nfJplaM17<8b06Gk5f1|67xeHj>ZilA!z7#MV*
zd4bWNfk6l6_W%Y4ojFi7K@1E!>!9pl1_m8yUym__fk6ix+%61^p$rT<ub^te7#MWE
zK-p0Y3_39XMl&$zg7;*)Ffhh2FzCYEAIrd?3(cFLIzbm&e=#O7Fz7<dI>sah23=@b
z#~8rCpql_SKb?U=Hv`JfVqnmP`6ZiyLAQp1fu|K5cnsPh3=BL|k<!l`C>xX?7bB(T
zRZuo4KZ3^}{{R0E%8%P1X^cgSfq`c`*wYMburM!!?iFQlVPLFfV9@P?x~HCjL3aw2
z-N3-03%1gQfw7T+K^MH&)P;euiGe{E+W%r~W?;|-TjRpO*uub|dk3nwm4QJQ+Gb#E
zV_?t&SD6qsda(4<$-tlo+TRLtLq7w99(ZrB3j^Z>1_nKF5V$ZfPG(@xgVryMQy3WZ
zU|~L$fk6)z<}(-=^k8{p76XGGEd9@6V9<lsxs3A|81$fJ4&wp_20duskZ~acgC4YO
zVO-3>pbvA;3I+y!m>X6yFz6dW{k4jLK_BLZ)eH>!u<%^Vz@QIv!&U|ceOMaa#=xKt
zEt45{F)-*u%VfsA3=H~bpk^LnV9<x<wc`v71~7Y1GB6lG+enOO7#Iv-{yodUU;s;3
zAaPi}ILE+X0BsjBo@Zb%fW_kl1_lFIUbw`-U;rxzE;BF~z~bl%c&LE^T>e~RU@(N%
zM~pWa7z|<g_W=WgA+&yHe8|9H2pwBse8#|F2us_~85j&x7#MhVfIR`;kIZu#oQNQG
z$|Wcpl!n3MhtN6&JVx~Y|9?;#egRF-pfn8br~Lo_{{sU94|t66|NsAQ7#MhdgA*MC
zTNDEW&mTzI<}!hX=O^giXHdHO$-rO;D<^+5Fc`whia!hthOjjMmw~|$T0b)WXJ9ad
zw#h+zh74Ch%mi&JGK7X96B7f2A+%g&VrF14gqEL7><kQs&!Fl#7#NJ8;lsqkz+eQ8
zJ0@NR1|w*j2c*{sI@ZA?z`$UX2h}Ucz+eP*Gm|g_gAue2Ws+iGFoO1Fm}D3jjG$#5
zlL7;S(GI9yB?bl~XxYxB!oXkz&5ulK3=GE5x{^tqfx#G>*O;^z7>uo;dUY5WjG<*0
zlO6+uG0dF?3=GCSP&I}O494InbYWmJWneJg0~I%CU@(TZZI~<=7)+r30wx;<1`}vn
zVzOmmFoD_Sz`$SvP1{V43=Af)uyST#FoBK{F}X7^m_W;a(0G^$w9Uih$-rO&ZObwF
zGccII+!n;ZV6p=0o?r$B6KH#kDU^Z11e`=%7?>g%7)(JC%izMm6ve<`3a!VP;u#oB
zp<{_m2@DLT(EJ4!hvq4!L<R;^X!>DFVqh?Zg?};wgDET=(is>`k1#Os{Dq`{&>nnV
z0dRnU(?72`l+DAyzzZHvfTVw3@c1Vr{qw@wT3;9#crBrM;R6E$uPv1QhJk_C5t9D7
zTo@R5oxq-B;G4q0!0QYyXc<f|Ffj0XBF;eI4M3cMz#EP@1A#XNaRvf!65^}_-VDT9
z2fQVS^9^`w5oa3kb|TI+;GK&&(|~s|;_L$6O^CA#cn=}YDB!(>IHQ2~5#r1N-p`0L
z2l$u~XAbZQBF-G(Q-Ga0z`($#hd5XObWW{aJ_BS!VLn4iYH<m4>%U$;Lwa&@d~$wn
zL1s>BiXMtwGDBuwiB*ZAZIPk1u92aMxrv3bnTdrpoM~>&kercNWL08hTV!NyU~On*
zZq1OBpO>xx)@Y1RV`*M-W_n&~3Ph<1NU4Fft|3%Es;ntOwm2ids05<N3?!;+Y-Da`
zVGSZ-b|V~M4pIRz6`~K-SPO`>nW?F<Db!xDUQ|_<5LF<jL0t^-v!MY<Lf6p90^)DD
zE~qp(*bJ<VOiisBz^6G_l^7a<w3t{MSTm&LmnP+;T9p`r1IYp;1hyM44h|8pcv*gC
zidBiBsjZ<YLwsg_QfZo1h@qKnv5`T1a$bp*p^kx$v5|FrK}nI7p}DP=p`nhk5lAG4
zAwDUwIMvF~T*u4=BoLoenpT`yWo4*iX$Iz}<s_zCndulBS?Cy=S;sKMr)B1(S{dmW
znwaQVSX(m`XQmgYmc)b707G#>YHA9IX~IyF4AKZ<n=&LPgJ?rThJsA6tRX`#=opF;
zs}c)_yqwIuY>>1WLvl`jGMH)1P?DLO3KBGCh>wpi&a47+3>gYaic&Ju(m*nXAenMd
zFoJj%3@}Be3~)hXhSGSD0;>{3Lx$3LaO{GtER6@JJQIe}cu;U!m6$S=A|#=5@r9*{
zAjgInTG$p_lqKd^8Cu#V78!z4u(h#{fsUDpwKW4&QHh}iLrP*wN)gB{#tg|YrjdcI
zmJvf{UOq_Nlp!Ux48$;F$cOmBn4uIBAQlYiFh+K2B}k1i1Huf3w3PVV#NuqL5@Qgv
zIJLwo#K_RL*w`p7r8qt*v!vL{$O!5-bFkZtOwFvVVQNc^3>lpA^K-09jErql-5h;_
zU9AjsLV`kFtqgUn8G=iblT(X}txAkcY*YQctqe_d+#Ef9LW5jEiNcz}4{~lU_~a0)
z5+hUFiehNF01<*IuqrV!L&#Y%Kowbq7=e=^_|Oh3BXe6VBU4CX1Rd&OWn>Odh#)@b
zoDwTjXi|g-<fo*9R6$ZBSSS;8da;!uI7u2CSzE)bg19Hd$kevj$Re*a7i3scYEdyP
z_2-p>P8BJ(GO~aMmWj0~$aX_B1M3(D&@mz)iwrHn83WZ+$l)kfZic1|c{zDj1xDr!
znO24%i>*u<7(g`mbQSO^Cs0*Z1xA*(T1IAI4Mye+3=E)?Tddp+8S-+hj4T<_GV?Nv
zGg4EmjEor=VCM`Qfs6th31WcE#3+2B;i@-U@Pg`{(Smoh;DwcxqXjScd~;B-2P!$h
z#Ubq2CTOWKOiE+OSyWbOM&^jp71i621F1k_u!0m490+l%G~~h@T%{C1O7sF#aN*8?
zIB^PmYF0{W4yJifL8xJfG9OfHfoh3@qSP|5&5$|+W(}zFKsUd*ASbf~)wN(DB(oVn
z4nZ|3FSQ(EKD0_gR7TK1ax=1o);I_$=z&{SZbrr+xdM<9Xf+QxdJ9d)ssK{&8JUCc
z53qs-5HwZALn?PSkRnhJFhKaoH6y6vwn8WXbHSA&%m{Gxi%^hPnu}y9w8n=<3rq_n
zE|IERP~aiyf>{EhK{01#2sR+g$`Gl_hMZJ}-4H`7NCGng(O6B%%umwGXTW`U8>q@h
zJ**9ON*m;yGJ>bG!TbttSs)T5ByJIWNKhd75MLqq&<IBeK%yDJ2l)=c1IHhN3yK@i
zz`!UT4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z
Q5Eu=C(GVC7fk7Gq0IWWazW@LL

diff --git a/src/libraries/libmisc/testnumlist.c b/src/libraries/libmisc/testnumlist.c
deleted file mode 100644
index e63e15473..000000000
--- a/src/libraries/libmisc/testnumlist.c
+++ /dev/null
@@ -1,109 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <misc-types.h>
-
-#include "numlist.h"
-
-
-/* ================================================================ */
-/*                        Some useful macros                        */
-
-
-#define IS_INTERVAL_START(x)  (((x) & INTERVAL_MASK) == INTERVAL_START)
-#define IS_INTERVAL_END(x)    (((x) & INTERVAL_MASK) == INTERVAL_END)
-
-#define NUMBER_OF(x)          ((x) & NUMBER_MASK)
-
-#define MAKE_INTERVAL_START(x)  ((x) | INTERVAL_START)
-#define MAKE_INTERVAL_END(x)    ((x) | INTERVAL_END)
-
-
-/* ================================================================ */
-
-
-void
-numlist_node_print(Numlist_node *nln)
-{
-    int      i;
-    u_long   num;
-
-    putchar('[');
-    for (i = 0; i < NUM_LONGS_IN_NUMLIST; ++i) {
-	if (i < nln->num_numbers) {
-	    num = nln->numbers[i];
-	    printf("%c%5U%c,", IS_INTERVAL_START(num) ? '<' : ' ',
-		   NUMBER_OF(num), IS_INTERVAL_END(num) ? '>' : ' ');
-	} else {
-	    printf("       ,");
-	}
-    }
-    putchar(']');
-    putchar('\n');
-}
-
-
-
-void
-numlist_print(Numlist *nl)
-{
-    Numlist_node  * nln;
-
-    printf("last_num   = %U\n", nl->last_num);
-    printf("last_index = %U\n", nl->last_index);
-    nln = nl->first;
-    while (nln != NULL) {
-	numlist_node_print(nln);
-	nln = nln->next;
-    }
-    putchar('\n');
-}
-
-
-
-int
-main()
-{
-    Numlist  * nl;
-    Bool       finished;
-
-    nl = numlist_create();
-    puts("Empty numlist:");
-    numlist_print(nl);
-
-    finished = FALSE;
-    while (!finished) {
-	char     command;
-	u_long   num;
-
-	scanf("\n%c%U", &command, &num);
-	switch (command) {
-	  case 'i':
-	    numlist_insert(nl, num);
-	    printf("%U inserted\n", num);
-	    numlist_print(nl);
-	    break;
-
-	  case 'd':
-	    numlist_delete(nl, num);
-	    printf("%U deleted\n", num);
-	    numlist_print(nl);
-	    break;
-
-	  case 'q':
-	    finished = TRUE;
-	    break;
-
-	  case ' ':
-	  case '\n': 
-	    break;
-
-	  default:
-	    printf("Unrecognized command: %c\n", command);
-	    break;
-	}
-    }
-    
-    return 0;
-}
-
diff --git a/src/libraries/libmisc/zmalloc.c b/src/libraries/libmisc/zmalloc.c
deleted file mode 100644
index 80a200707..000000000
--- a/src/libraries/libmisc/zmalloc.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- *  zmalloc.c
- *		
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- *
- *
- *  Any opinions expressed in this code are the author's PERSONAL opinions,
- *  and does NOT, repeat NOT, represent any official standpoint of Lysator,
- *  even if so stated.
- */
-
-
-
-#include <stddef.h>
-#include <malloc.h>
-#include <string.h>
-
-#include <compiler.h>
-
-#include "zmalloc.h"
-
-
-#define EXPORT
-
-
-typedef	struct	{
-	int		refcount;
-	size_t		size;
-}  z_info;
-
-
-
-#define	REFCOUNT(pointer)	\
-	(((z_info *) ((char *) pointer - sizeof (z_info)))->refcount)
-
-#define	AREA_SIZE(pointer)	\
-	(((z_info *) ((char *) pointer - sizeof (z_info)))->size)
-
-
-#define MIN(n1, n2)		(((n1) < (n2)) ? (n1) : (n2))
-
-
-
-EXPORT  void *
-zmalloc (size_t	   size)
-{
-    void		* memory;
-
-    memory = malloc (size + sizeof (z_info));
-    if (memory == NULL)
-	return  NULL;
-    ((z_info *) memory)->size = size;
-    ((z_info *) memory)->refcount = 1;
-    return  (char *) memory + sizeof (z_info);
-}
-
-
-
-EXPORT  void *
-zcalloc (size_t	   n,
-	 size_t	   size)
-
-{
-    void		* memory;
-
-    memory = malloc (n * size + sizeof (z_info));
-    if (memory == NULL)
-	return  NULL;
-    ((z_info *) memory)->size = n * size;
-    ((z_info *) memory)->refcount = 1;
-    memset ((char *) memory + sizeof (z_info),
-	    0, n * size);
-
-    return  (char *) memory + sizeof (z_info);
-}
-
-
-
-EXPORT  void *
-zrealloc (void	  * ptr,
-	  size_t    size)
-
-{
-    void		* memory;
-
-    if (ptr == NULL)
-	return  zmalloc (size);
-    if (REFCOUNT (ptr) > 1)
-    {
-	memory = zmalloc (size);
-	if (memory == NULL)
-	    return  NULL;
-	memcpy (memory, ptr, MIN (size, AREA_SIZE (ptr)));
-	--REFCOUNT (ptr);
-	return  memory;
-    }
-    else
-    {
-	memory = realloc ((char *) ptr - sizeof (z_info),
-			  size + sizeof (z_info));
-	return  (char *) memory + sizeof (z_info);
-    }
-}
-
-
-
-EXPORT  void
-zfree (void	* ptr)
-{
-    if (ptr != NULL && --REFCOUNT (ptr) <= 0)
-    {
-	free ((char *) ptr - sizeof (z_info));
-    }
-}
-
-
-
-EXPORT  void
-zdestruct (void	  * ptr)
-{
-    if (ptr != NULL)
-	free ((char *) ptr - sizeof (z_info));
-}
-
-
-
-EXPORT  void *
-zuse (void	* ptr)
-{
-    if (ptr != NULL)
-    {
-	++REFCOUNT (ptr);
-    }
-    return  ptr;
-}
-
-
-
-EXPORT  void *
-zown (void	* ptr)
-{
-    void	* memory;
-
-    if (ptr == NULL)
-	return  NULL;
-    if (REFCOUNT (ptr) == 1)
-	return  ptr;
-    else
-    {
-	if ((memory = malloc (AREA_SIZE (ptr))) == NULL)
-	    return  NULL;
-	memcpy (memory, ptr, AREA_SIZE (ptr));
-	zfree (ptr);
-
-	return  memory;
-    }
-}
diff --git a/src/libraries/libmisc/zmalloc.h b/src/libraries/libmisc/zmalloc.h
deleted file mode 100644
index a11a8c256..000000000
--- a/src/libraries/libmisc/zmalloc.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- *  zmalloc.h  --  Memory allocation routines with reference counts
- *
- *
- *  Copyright (C) 1990	Lysator Computer Club,
- *			Linkoping University,  Sweden
- *
- *  Everyone is granted permission to copy, modify and redistribute
- *  this code, provided the people they give it to can.
- *
- *
- *  Author:	Thomas Bellman
- *		Lysator Computer Club
- *		Linkoping University
- *		Sweden
- *
- *  email:	Bellman@Lysator.LiU.SE
- */
-
-
-#ifndef  _ZMALLOC_H_INCLUDED__
-#define  _ZMALLOC_H_INCLUDED__
-
-
-/* Declare 'size_t' */
-#include <stddef.h>
-
-#include <compiler.h>
-
-
-
-/*
- *  Allocate a piece of memory and set its reference count to 1.
- *  Allocating a zero sized object is allowed, and results in a
- *  unique pointer that can be used by all the other routines in
- *  this package, and must be released using zfree(), but it
- *  points to "nothing".
- */
-extern  void *
-zmalloc (size_t	   size);
-
-
-/*
- *  Allocate N contigous objects of size SIZE, set the contents
- *  to binary 0 and set the reference count to 1.  Allocating 0
- *  objecs, or objects of size zero, is allowed, and results in a
- *  unique pointer that can be used by all the other routines in
- *  this package, and must be released using zfree(), but it
- *  points to "nothing".
- */
-extern  void *
-zcalloc (size_t	   n,
-	 size_t	   size);
-
-
-/*
-
- *  Reallocate the storage PTR points to the size SIZE.  If
- *  "others" are still holding references to this memory, they
- *  can still use it, and the caller of zrealloc() gets a copy of
- *  the original memory area.  NULL is returned if the request
- *  couldn't be honored, and the memory area is still in use by
- *  the caller.  Reallocating the NULL pointer is equivalent to
- *  doing a zmalloc() with the same size.  The same rules for
- *  allocating objects of size 0 as for zmalloc() and zcalloc()
- *  applies.
-
- */
-extern  void *
-zrealloc (void	  * ptr,
-	  size_t    size);
-
-
-/*
- *  Indicate that the memory pointed to by PTR is not used anymore
- *  by the caller, i e the reference count is decremented by one.
- *  The memory pointed to might be released as a result of this
- *  call.  Freeing the NULL pointer is a no-op.
- */
-extern  void
-zfree (void	* ptr);
-
-
-
-/*
- *  Free the area pointed to by PTR regardless of how many are
- *  referencing it.  This invalidiates all pointers to the area.
- *  Calling zdestruct() on a NULL pointer is a no-op.
- */
-extern  void
-zdestruct (void	  * ptr);
-
-
-
-/*
- *  Add onother user of the memory pointed to by PTR, i e increase
- *  the reference count by one.  Return value is PTR.  Using the
- *  NULL pointer is a no-op, i e it just returns NULL.
- */
-extern  void *
-zuse (void	* ptr);
-
-
-
-/*
- *  Get a private copy of the area pointed to by PTR.  If
- *  necessary, i e if others are holding references to the area,
- *  copies the contents to a new place, and releases the original
- *  area.  If you want to keep a reference to the old area, you
- *  should do 'zown(zuse(p))'.
- */
-extern  void *
-zown (void	* ptr);
-
-
-#endif  /*  _ZMALLOC_H_INCLUDED__  */
-- 
GitLab