[mw-devel] MW3 r1290 - in trunk: po src src/server src/webclient

welshbyte at sucs.org welshbyte at sucs.org
Sun Nov 18 02:31:43 GMT 2012


Author: welshbyte
Date: 2012-11-18 02:31:42 +0000 (Sun, 18 Nov 2012)
New Revision: 1290

Removed:
   trunk/src/scrcomplete.h
   trunk/src/tidyup.c
   trunk/src/tidyup.h
   trunk/src/topten.c
   trunk/src/topten.h
Modified:
   trunk/po/cy_GB.po
   trunk/po/el_GR.po
   trunk/po/mw.pot
   trunk/src/Makefile
   trunk/src/Parse.c
   trunk/src/Parse.h
   trunk/src/add.c
   trunk/src/alias.c
   trunk/src/alias.h
   trunk/src/bb.h
   trunk/src/edit.c
   trunk/src/edit.h
   trunk/src/files.c
   trunk/src/files.h
   trunk/src/frl.c
   trunk/src/frl.h
   trunk/src/gags.c
   trunk/src/gagtable.h
   trunk/src/getpass.c
   trunk/src/hash.c
   trunk/src/hash.h
   trunk/src/iconv.c
   trunk/src/iconv.h
   trunk/src/init.c
   trunk/src/init.h
   trunk/src/js.c
   trunk/src/js.h
   trunk/src/log.c
   trunk/src/main.c
   trunk/src/main.h
   trunk/src/mesg.c
   trunk/src/mesg.h
   trunk/src/newmain.c
   trunk/src/perms.c
   trunk/src/perms.h
   trunk/src/script.c
   trunk/src/script.h
   trunk/src/script_inst.c
   trunk/src/script_inst.h
   trunk/src/server/Makefile
   trunk/src/socket.c
   trunk/src/socket.h
   trunk/src/special.c
   trunk/src/special.h
   trunk/src/sqlite.c
   trunk/src/sqlite.h
   trunk/src/strings.c
   trunk/src/strings.h
   trunk/src/talker.c
   trunk/src/talker.h
   trunk/src/talker_privs.c
   trunk/src/talker_privs.h
   trunk/src/uri.c
   trunk/src/uri.h
   trunk/src/user.c
   trunk/src/user.h
   trunk/src/webclient/Makefile
   trunk/src/webclient/comms.c
   trunk/src/webclient/comms.h
   trunk/src/webclient/import.c
   trunk/src/webclient/mwpoll.c
Log:
Adds -Wwrite-strings and adds (a lot of) const correctness fixes. This caught some crazy things along the way such as unnecessary strdup()s and passing a char * to sqlite_free(). Some files only contained one definition called from one other file so they were merged and deleted.



Modified: trunk/po/cy_GB.po
===================================================================
--- trunk/po/cy_GB.po	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/po/cy_GB.po	2012-11-18 02:31:42 UTC (rev 1290)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: mw 2.13\n"
 "Report-Msgid-Bugs-To: mw-devel at lists.sucs.org\n"
-"POT-Creation-Date: 2012-11-17 19:52+0000\n"
+"POT-Creation-Date: 2012-11-18 02:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -66,7 +66,7 @@
 msgid "Message must be addressed to an existing user.\n"
 msgstr ""
 
-#: ../src/add.c:204 ../src/add.c:211 ../src/edit.c:916
+#: ../src/add.c:204 ../src/add.c:211 ../src/edit.c:918
 #, c-format
 msgid "Subject: "
 msgstr ""
@@ -115,7 +115,7 @@
 msgid "edit"
 msgstr ""
 
-#: ../src/add.c:307 ../src/edit.c:832
+#: ../src/add.c:307 ../src/edit.c:834
 #, c-format
 msgid "Failed to set user id, aborting.\n"
 msgstr ""
@@ -125,7 +125,7 @@
 msgid "Cannot create temporary file: %s\n"
 msgstr ""
 
-#: ../src/add.c:350 ../src/edit.c:865
+#: ../src/add.c:350 ../src/edit.c:867
 #, c-format
 msgid "ERROR: Could not spawn editor: %s\n"
 msgstr ""
@@ -149,464 +149,464 @@
 msgid "Warning: incomplete folder record written; folder file may be corrupt.\n"
 msgstr ""
 
-#: ../src/alias.c:127 ../src/alias.c:137 ../src/alias.c:151 ../src/main.c:1021
+#: ../src/alias.c:127 ../src/alias.c:137 ../src/alias.c:151 ../src/main.c:1022
 #: ../src/user.c:415 ../src/user.c:452 ../src/user.c:518
 #, c-format
 msgid "---more---\r"
 msgstr ""
 
-#: ../src/edit.c:148
+#: ../src/edit.c:150
 #, c-format
 msgid "Username %s not found.\n"
 msgstr ""
 
-#: ../src/edit.c:162
+#: ../src/edit.c:164
 #, c-format
 msgid "Current status set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:165
+#: ../src/edit.c:167
 #, c-format
 msgid "New status [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:174
+#: ../src/edit.c:176
 #, c-format
 msgid "Do you really want to delete this user ? "
 msgstr ""
 
-#: ../src/edit.c:183
+#: ../src/edit.c:185
 #, c-format
 msgid "Status set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:197
+#: ../src/edit.c:199
 #, c-format
 msgid "Current specials set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:200
+#: ../src/edit.c:202
 #, c-format
 msgid "New specials [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:206
+#: ../src/edit.c:208
 #, c-format
 msgid "Specials set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:219
+#: ../src/edit.c:221
 #, c-format
 msgid "Current chatprivs set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:220
+#: ../src/edit.c:222
 #, c-format
 msgid "New chatprivs [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:225
+#: ../src/edit.c:227
 #, c-format
 msgid "Chatprivs set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:243
+#: ../src/edit.c:245
 #, c-format
 msgid "Current protection set to %s\n"
 msgstr ""
 
-#: ../src/edit.c:244
+#: ../src/edit.c:246
 #, c-format
 msgid "New levels [0-4]/[0-4]: "
 msgstr ""
 
-#: ../src/edit.c:255
+#: ../src/edit.c:257
 #, c-format
 msgid "Protection set to %d/%d.\n"
 msgstr ""
 
-#: ../src/edit.c:265
+#: ../src/edit.c:267
 #, c-format
 msgid "Invalid protection level.\n"
 msgstr ""
 
-#: ../src/edit.c:275
+#: ../src/edit.c:277
 #, c-format
 msgid "Current chatmode set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:276
+#: ../src/edit.c:278
 #, c-format
 msgid "New chatmode [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:281
+#: ../src/edit.c:283
 #, c-format
 msgid "Chatmode set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:298
+#: ../src/edit.c:300
 #, c-format
 msgid "User currently in groups [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:299
+#: ../src/edit.c:301
 #, c-format
 msgid "New Groups [+-=][12345678]: "
 msgstr ""
 
-#: ../src/edit.c:309 ../src/edit.c:675
+#: ../src/edit.c:311 ../src/edit.c:677
 #, c-format
 msgid "Groups changed to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:318
+#: ../src/edit.c:320
 msgid "New Passwd: "
 msgstr ""
 
-#: ../src/edit.c:319 ../src/newmain.c:677
+#: ../src/edit.c:321 ../src/newmain.c:878
 msgid "Again: "
 msgstr ""
 
-#: ../src/edit.c:322
+#: ../src/edit.c:324
 #, c-format
 msgid ""
 "Passwords did not match.\n"
 "Not done.\n"
 msgstr ""
 
-#: ../src/edit.c:327
+#: ../src/edit.c:329
 #, c-format
 msgid "Password changed.\n"
 msgstr ""
 
-#: ../src/edit.c:339
+#: ../src/edit.c:341
 #, c-format
 msgid "Real Name: %s\n"
 msgstr ""
 
-#: ../src/edit.c:340
+#: ../src/edit.c:342
 #, c-format
 msgid "Enter new name (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:346 ../src/edit.c:421
+#: ../src/edit.c:348 ../src/edit.c:423
 #, c-format
 msgid "New name set.\n"
 msgstr ""
 
-#: ../src/edit.c:360
+#: ../src/edit.c:362
 #, c-format
 msgid "User currently in room [%d]\n"
 msgstr ""
 
-#: ../src/edit.c:361
+#: ../src/edit.c:363
 #, c-format
 msgid "New Room: [0-65535]: "
 msgstr ""
 
-#: ../src/edit.c:367 ../src/edit.c:373
+#: ../src/edit.c:369 ../src/edit.c:375
 #, c-format
 msgid "Invalid Room ID (0-65535 only)\n"
 msgstr ""
 
-#: ../src/edit.c:379
+#: ../src/edit.c:381
 #, c-format
 msgid "Room changed to %d.\n"
 msgstr ""
 
-#: ../src/edit.c:389
+#: ../src/edit.c:391
 #, c-format
 msgid "WARNING: This command can be very dangerous !\n"
 msgstr ""
 
-#: ../src/edit.c:390
+#: ../src/edit.c:392
 #, c-format
 msgid "User Name: %s\n"
 msgstr ""
 
-#: ../src/edit.c:391
+#: ../src/edit.c:393
 #, c-format
 msgid "Enter new username (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:408
+#: ../src/edit.c:410
 #, c-format
 msgid "You cannot change a username to one that already exists.\n"
 msgstr ""
 
-#: ../src/edit.c:411
+#: ../src/edit.c:413
 #, c-format
 msgid "Attempting to update existing user.\n"
 msgstr ""
 
-#: ../src/edit.c:414
+#: ../src/edit.c:416
 #, c-format
 msgid "Are you sure you want to change user '%s' into user '%s' ? "
 msgstr ""
 
-#: ../src/edit.c:425 ../src/edit.c:427
+#: ../src/edit.c:427 ../src/edit.c:429
 #, c-format
 msgid "Change Cancelled.\n"
 msgstr ""
 
-#: ../src/edit.c:432 ../src/edit.c:986
+#: ../src/edit.c:434 ../src/edit.c:988
 #, c-format
 msgid "Contact address: %s\n"
 msgstr ""
 
-#: ../src/edit.c:433 ../src/edit.c:987
+#: ../src/edit.c:435 ../src/edit.c:989
 #, c-format
 msgid "New address (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:439 ../src/edit.c:992
+#: ../src/edit.c:441 ../src/edit.c:994
 #, c-format
 msgid "New address set.\n"
 msgstr ""
 
-#: ../src/edit.c:447
+#: ../src/edit.c:449
 #, c-format
 msgid "Current Status: %s\n"
 msgstr ""
 
-#: ../src/edit.c:448
+#: ../src/edit.c:450
 #, c-format
 msgid "New Status (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:455 ../src/edit.c:462
+#: ../src/edit.c:457 ../src/edit.c:464
 #, c-format
 msgid "New status set.\n"
 msgstr ""
 
-#: ../src/edit.c:472
+#: ../src/edit.c:474
 #, c-format
 msgid "Timeout: %ld sec.\n"
 msgstr ""
 
-#: ../src/edit.c:473
+#: ../src/edit.c:475
 #, c-format
 msgid "New timeout value: "
 msgstr ""
 
-#: ../src/edit.c:494
+#: ../src/edit.c:496
 #, c-format
 msgid "TIMEOUT now disabled.\n"
 msgstr ""
 
-#: ../src/edit.c:500
+#: ../src/edit.c:502
 #, c-format
 msgid "TIMEOUT was already disabled.\n"
 msgstr ""
 
-#: ../src/edit.c:505
+#: ../src/edit.c:507
 #, c-format
 msgid "TIMEOUT must be be at least 10 minutes (600), or 0 to disable.\n"
 msgstr ""
 
-#: ../src/edit.c:513
+#: ../src/edit.c:515
 #, c-format
-msgid "New timeout set to %ld seconds.\n"
+msgid "New timeout set to %<PRId32> seconds.\n"
 msgstr ""
 
-#: ../src/edit.c:522
+#: ../src/edit.c:524
 #, c-format
 msgid "Lastread in folder? "
 msgstr ""
 
-#: ../src/edit.c:527
+#: ../src/edit.c:529
 #, c-format
 msgid "Folder not found.\n"
 msgstr ""
 
-#: ../src/edit.c:530
+#: ../src/edit.c:532
 #, c-format
 msgid "Last read message number %d\n"
 msgstr ""
 
-#: ../src/edit.c:531
+#: ../src/edit.c:533
 #, c-format
 msgid "New lastread: "
 msgstr ""
 
-#: ../src/edit.c:537
+#: ../src/edit.c:539
 #, c-format
 msgid "Lastread changed to %d\n"
 msgstr ""
 
-#: ../src/edit.c:541
+#: ../src/edit.c:543
 #, c-format
 msgid "Not changed.\n"
 msgstr ""
 
-#: ../src/edit.c:551
+#: ../src/edit.c:553
 #, c-format
 msgid ""
 "Username: %s\n"
 "Real Name: %s\n"
 msgstr ""
 
-#: ../src/edit.c:552
+#: ../src/edit.c:554
 #, c-format
 msgid ""
 "Contact: %s\n"
 "Status [%s]\tSpecials [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:555 ../src/edit.c:737
+#: ../src/edit.c:557 ../src/edit.c:739
 #, c-format
 msgid "Groups [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:558
+#: ../src/edit.c:560
 #, c-format
 msgid "Talker: Modes=[%s]  Privs=[%s]  Protection=[%s]\n"
 msgstr ""
 
-#: ../src/edit.c:564
+#: ../src/edit.c:566
 #, c-format
 msgid "Timeout disabled.\n"
 msgstr ""
 
-#: ../src/edit.c:566
+#: ../src/edit.c:568
 #, c-format
 msgid "Timeout set to %s.\n"
 msgstr ""
 
-#: ../src/edit.c:568
+#: ../src/edit.c:570
 #, c-format
 msgid "Last Login: %s"
 msgstr ""
 
-#: ../src/edit.c:571
+#: ../src/edit.c:573
 #, c-format
 msgid "Status: %s (%s ago)\n"
 msgstr ""
 
-#: ../src/edit.c:577
+#: ../src/edit.c:579
 #, c-format
 msgid "Are you sure you want to clear %s's ignore list? "
 msgstr ""
 
-#: ../src/edit.c:583
+#: ../src/edit.c:585
 #, c-format
 msgid "Ignorelist Cleared.\n"
 msgstr ""
 
-#: ../src/edit.c:587
+#: ../src/edit.c:589
 #, c-format
 msgid "Clear Cancelled.\n"
 msgstr ""
 
-#: ../src/edit.c:590
+#: ../src/edit.c:592
 #, c-format
 msgid "Unknown Command\n"
 msgstr ""
 
-#: ../src/edit.c:628
+#: ../src/edit.c:630
 #, c-format
 msgid "Unknown folder name.\n"
 msgstr ""
 
-#: ../src/edit.c:635
+#: ../src/edit.c:637
 #, c-format
 msgid ""
 "Folder %s\n"
 "Current status:-\n"
 msgstr ""
 
-#: ../src/edit.c:636
+#: ../src/edit.c:638
 #, c-format
 msgid "User not in group [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:638
+#: ../src/edit.c:640
 #, c-format
 msgid "User in group [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:639
+#: ../src/edit.c:641
 #, c-format
 msgid "Change to :-\n"
 msgstr ""
 
-#: ../src/edit.c:640
+#: ../src/edit.c:642
 #, c-format
 msgid "User not in group [+-=][arwRWpm]: "
 msgstr ""
 
-#: ../src/edit.c:647 ../src/edit.c:658
+#: ../src/edit.c:649 ../src/edit.c:660
 #, c-format
 msgid "Status changed to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:649 ../src/edit.c:660
+#: ../src/edit.c:651 ../src/edit.c:662
 #, c-format
 msgid "WARNING: folder may get written over by the next folder created.\n"
 msgstr ""
 
-#: ../src/edit.c:651
+#: ../src/edit.c:653
 #, c-format
 msgid "User in group [+-=][arwRWpm]: "
 msgstr ""
 
-#: ../src/edit.c:667
+#: ../src/edit.c:669
 #, c-format
 msgid "Folder %s is currently in groups [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:668
+#: ../src/edit.c:670
 #, c-format
 msgid "Folder groups [+-=][12345678]: "
 msgstr ""
 
-#: ../src/edit.c:680
+#: ../src/edit.c:682
 #, c-format
 msgid "Current folder name = %s\n"
 msgstr ""
 
-#: ../src/edit.c:681
+#: ../src/edit.c:683
 #, c-format
 msgid "Change to ? (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:705
+#: ../src/edit.c:707
 #, c-format
 msgid "Name changed to %s\n"
 msgstr ""
 
-#: ../src/edit.c:710
+#: ../src/edit.c:712
 #, c-format
 msgid "First Message in folder is %d\n"
 msgstr ""
 
-#: ../src/edit.c:711
+#: ../src/edit.c:713
 #, c-format
 msgid "New first message: "
 msgstr ""
 
-#: ../src/edit.c:716
+#: ../src/edit.c:718
 #, c-format
 msgid "First message set to %d\n"
 msgstr ""
 
-#: ../src/edit.c:718
+#: ../src/edit.c:720
 #, c-format
 msgid "Last Message in folder is %d\n"
 msgstr ""
 
-#: ../src/edit.c:719
+#: ../src/edit.c:721
 #, c-format
 msgid "New Last message: "
 msgstr ""
 
-#: ../src/edit.c:724
+#: ../src/edit.c:726
 #, c-format
 msgid "Last message set to %d\n"
 msgstr ""
 
-#: ../src/edit.c:731
+#: ../src/edit.c:733
 #, c-format
 msgid ""
 "\n"
@@ -615,132 +615,132 @@
 "Message range %d to %d\n"
 msgstr ""
 
-#: ../src/edit.c:733
+#: ../src/edit.c:735
 #, c-format
 msgid "Status (out of group) [%s]"
 msgstr ""
 
-#: ../src/edit.c:735
+#: ../src/edit.c:737
 #, c-format
 msgid "    (in group) [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:742
+#: ../src/edit.c:744
 #, c-format
 msgid "Current folder topic = '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:743
+#: ../src/edit.c:745
 #, c-format
 msgid "New topic (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:748
+#: ../src/edit.c:750
 #, c-format
 msgid "Topic changed to '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:754
+#: ../src/edit.c:756
 #, c-format
 msgid "Do you really want to delete folder %s  ?(yes/no) "
 msgstr ""
 
-#: ../src/edit.c:773
+#: ../src/edit.c:775
 #, c-format
 msgid "Folder Deleted.\n"
 msgstr ""
 
-#: ../src/edit.c:777 ../src/edit.c:910 ../src/edit.c:923
+#: ../src/edit.c:779 ../src/edit.c:912 ../src/edit.c:925
 #, c-format
 msgid "Not Done.\n"
 msgstr ""
 
-#: ../src/edit.c:809
+#: ../src/edit.c:811
 #, c-format
 msgid "Message %d not found.\n"
 msgstr ""
 
-#: ../src/edit.c:818
+#: ../src/edit.c:820
 #, c-format
 msgid "You cannot edit other peoples messages.\n"
 msgstr ""
 
-#: ../src/edit.c:902
+#: ../src/edit.c:904
 #, c-format
 msgid "Currently to '%s'.\n"
 msgstr ""
 
-#: ../src/edit.c:903
+#: ../src/edit.c:905
 #, c-format
 msgid "to: "
 msgstr ""
 
-#: ../src/edit.c:907
+#: ../src/edit.c:909
 #, c-format
 msgid "Message now to '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:915
+#: ../src/edit.c:917
 #, c-format
 msgid "Current subject is '%s'.\n"
 msgstr ""
 
-#: ../src/edit.c:920
+#: ../src/edit.c:922
 #, c-format
 msgid "Subject '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:928
+#: ../src/edit.c:930
 #, c-format
 msgid "Message Marked for deletion.\n"
 msgstr ""
 
-#: ../src/edit.c:933
+#: ../src/edit.c:935
 #, c-format
 msgid "Message has been undeleted.\n"
 msgstr ""
 
-#: ../src/edit.c:939
+#: ../src/edit.c:941
 #, c-format
 msgid "Status mode is currently %s\n"
 msgstr ""
 
-#: ../src/edit.c:941
+#: ../src/edit.c:943
 #, c-format
 msgid "New status [%s]: "
 msgstr ""
 
-#: ../src/edit.c:947 ../src/user.c:270
+#: ../src/edit.c:949 ../src/user.c:270
 #, c-format
 msgid "Status set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:951
+#: ../src/edit.c:953
 #, c-format
 msgid "What do you want to do ?\n"
 msgstr ""
 
-#: ../src/edit.c:972
+#: ../src/edit.c:974
 #, c-format
 msgid "Total Login Time of "
 msgstr ""
 
-#: ../src/edit.c:974
+#: ../src/edit.c:976
 #, c-format
 msgid "%d day%s, "
 msgstr ""
 
-#: ../src/edit.c:976
+#: ../src/edit.c:978
 #, c-format
 msgid "%d hour%s, "
 msgstr ""
 
-#: ../src/edit.c:978
+#: ../src/edit.c:980
 #, c-format
 msgid "%d minute%s, "
 msgstr ""
 
-#: ../src/edit.c:979
+#: ../src/edit.c:981
 #, c-format
 msgid "%d second%s.\n"
 msgstr ""
@@ -868,126 +868,141 @@
 msgid "\"%s--\" says Zebedee\n"
 msgstr ""
 
-#: ../src/init.c:130
+#: ../src/init.c:97
 #, c-format
 msgid "Cannot load \"%s\": Illegal path\n"
 msgstr ""
 
-#: ../src/init.c:143
+#: ../src/init.c:110
 #, c-format
 msgid "Error reading %s: Not a regular file\n"
 msgstr ""
 
-#: ../src/init.c:150
+#: ../src/init.c:117
 #, c-format
 msgid "Error reading %s: %s\n"
 msgstr ""
 
-#: ../src/init.c:181 ../src/init.c:188
+#: ../src/init.c:148 ../src/init.c:155
 #, c-format
 msgid "Malformed alias in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:196
+#: ../src/init.c:163
 #, c-format
 msgid "Alias %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:204 ../src/init.c:211
+#: ../src/init.c:171 ../src/init.c:178
 #, c-format
 msgid "Malformed bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:219
+#: ../src/init.c:186
 #, c-format
 msgid "Bind %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:227 ../src/init.c:234
+#: ../src/init.c:194 ../src/init.c:201
 #, c-format
 msgid "Malformed rpc bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:242
+#: ../src/init.c:209
 #, c-format
 msgid "RPC Bind %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:250 ../src/init.c:269
+#: ../src/init.c:217 ../src/init.c:236
 #, c-format
 msgid "Malformed include in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:281
+#: ../src/init.c:248
 #, c-format
 msgid "Malformed event bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:289
+#: ../src/init.c:256
 #, c-format
 msgid "Event bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:297
+#: ../src/init.c:264
 #, c-format
 msgid "Malformed ipc in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:305
+#: ../src/init.c:272
 #, c-format
 msgid "IPC bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:313
+#: ../src/init.c:280
 #, c-format
 msgid "Malformed checkonoff bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:321
+#: ../src/init.c:288
 #, c-format
 msgid "Checkonoff bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:329
+#: ../src/init.c:296
 #, c-format
 msgid "Malformed shutdown bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:337
+#: ../src/init.c:304
 #, c-format
 msgid "Shutdown bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:345
+#: ../src/init.c:312
 #, c-format
 msgid "Malformed force bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:353
+#: ../src/init.c:320
 #, c-format
 msgid "Force bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:361 ../src/init.c:374
+#: ../src/init.c:328 ../src/init.c:341
 #, c-format
 msgid "Malformed Script Function declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:387 ../src/init.c:400
+#: ../src/init.c:354 ../src/init.c:367
 #, c-format
 msgid "Malformed Script Init declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:413 ../src/init.c:426
+#: ../src/init.c:380 ../src/init.c:393
 #, c-format
 msgid "Malformed Script BoardInit declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:434
+#: ../src/init.c:401
 #, c-format
 msgid "Loading file %s unrecognised command '%s' on line %d\n"
 msgstr ""
 
+#: ../src/init.c:427
+#, c-format
+msgid "Failed to get user data\n"
+msgstr ""
+
+#: ../src/init.c:432
+#, c-format
+msgid "Failed to read init file %s/%s\n"
+msgstr ""
+
+#: ../src/init.c:439
+#, c-format
+msgid "Could not find init file %s\n"
+msgstr ""
+
 #: ../src/main.c:253
 msgid "05*** You have new mail.\n"
 msgstr ""
@@ -1069,37 +1084,37 @@
 msgid "Username not permitted.\n"
 msgstr ""
 
-#: ../src/main.c:612 ../src/main.c:638
+#: ../src/main.c:613 ../src/main.c:639
 #, c-format
 msgid "%s: User %s not found.\n"
 msgstr ""
 
-#: ../src/main.c:631
+#: ../src/main.c:632
 #, c-format
 msgid "%s: Folder %s not found.\n"
 msgstr ""
 
-#: ../src/main.c:673
+#: ../src/main.c:674
 #, c-format
 msgid "The board is currently locked to normal users.\n"
 msgstr ""
 
-#: ../src/main.c:676
+#: ../src/main.c:677
 #, c-format
 msgid "The Board has been temporarily closed.\n"
 msgstr ""
 
-#: ../src/main.c:677
+#: ../src/main.c:678
 #, c-format
 msgid "Please call again soon.\n"
 msgstr ""
 
-#: ../src/main.c:694
+#: ../src/main.c:695
 #, c-format
 msgid "01%s has just entered the board."
 msgstr ""
 
-#: ../src/main.c:718
+#: ../src/main.c:719
 #, c-format
 msgid ""
 "\n"
@@ -1107,81 +1122,81 @@
 "\n"
 msgstr ""
 
-#: ../src/main.c:720
+#: ../src/main.c:721
 #, c-format
 msgid "Type 'talker' to enter chat mode.\n"
 msgstr ""
 
-#: ../src/main.c:725
+#: ../src/main.c:726
 #, c-format
 msgid "You must register before being able to use this system fully.\n"
 msgstr ""
 
-#: ../src/main.c:726
+#: ../src/main.c:727
 #, c-format
 msgid "Until then you will not be able to write in most folders or use chat mode.\n"
 msgstr ""
 
-#: ../src/main.c:727
+#: ../src/main.c:728
 #, c-format
 msgid "Wait here for a few minutes and an administrator might register you.\n"
 msgstr ""
 
-#: ../src/main.c:729
+#: ../src/main.c:730
 #, c-format
 msgid "Type 'help' for help.\n"
 msgstr ""
 
-#: ../src/main.c:1075
+#: ../src/main.c:1076
 #, c-format
 msgid ""
 "\n"
 "Error reading incoming message pipe. panic.\n"
 msgstr ""
 
-#: ../src/main.c:1079
+#: ../src/main.c:1080
 #, c-format
 msgid ""
 "\n"
 "Error on input terminal, argh.\n"
 msgstr ""
 
-#: ../src/main.c:1152
+#: ../src/main.c:1153
 #, c-format
 msgid "Error: Urk, no message to print.\n"
 msgstr ""
 
-#: ../src/main.c:1368
+#: ../src/main.c:1369
 #, c-format
 msgid "*** Timed Out, Good Bye\r\n"
 msgstr ""
 
-#: ../src/main.c:1372
+#: ../src/main.c:1373
 #, c-format
 msgid "04%s has been timed out."
 msgstr ""
 
-#: ../src/main.c:1379
+#: ../src/main.c:1380
 #, c-format
 msgid "%c*** Wakey ! Wakey !\r\n"
 msgstr ""
 
-#: ../src/main.c:2030
+#: ../src/main.c:2031
 #, c-format
 msgid "Release version %s.%s.%s\n"
 msgstr ""
 
-#: ../src/main.c:2032
+#: ../src/main.c:2033
 #, c-format
 msgid "Release version %s.%s\n"
 msgstr ""
 
-#: ../src/main.c:2034
+#: ../src/main.c:2035
 #, c-format
 msgid "Development version %s.%s.%s\n"
 msgstr ""
 
-#: ../src/main.c:2036
+#: ../src/main.c:2037
 #, c-format
 msgid "Built by %s on %s\n"
 msgstr ""
@@ -1329,7 +1344,7 @@
 msgid "Skipping this folder. %d messages left unread.\n"
 msgstr ""
 
-#: ../src/new.c:155 ../src/newmain.c:708
+#: ../src/new.c:155 ../src/newmain.c:909
 #, c-format
 msgid "Unsubscribing from %s.\n"
 msgstr ""
@@ -1354,635 +1369,635 @@
 msgid "            <empty>\n"
 msgstr ""
 
-#: ../src/newmain.c:77 ../src/newmain.c:116 ../src/newmain.c:140
+#: ../src/newmain.c:76 ../src/newmain.c:115 ../src/newmain.c:139
 #, c-format
 msgid "Sorry, no help available on that subject.\n"
 msgstr ""
 
-#: ../src/newmain.c:102
+#: ../src/newmain.c:101
 #, c-format
 msgid "No general help available for talker commands.\n"
 msgstr ""
 
-#: ../src/newmain.c:156 ../src/newmain.c:162
+#: ../src/newmain.c:155 ../src/newmain.c:161
 #, c-format
 msgid "Unknown foldername.\n"
 msgstr ""
 
-#: ../src/newmain.c:167
+#: ../src/newmain.c:166
 #, c-format
 msgid "Changing to folder %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:201 ../src/newmain.c:575
+#: ../src/newmain.c:200 ../src/newmain.c:574
 #, c-format
 msgid "No current folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:205
+#: ../src/newmain.c:204
 #, c-format
 msgid "Moved to end of folder. (message %d)\n"
 msgstr ""
 
-#: ../src/newmain.c:213
+#: ../src/newmain.c:212
 #, c-format
 msgid "Moved to start of folder. (message %d)\n"
 msgstr ""
 
-#: ../src/newmain.c:243
+#: ../src/newmain.c:242
 #, c-format
 msgid "Messages are now off.\n"
 msgstr ""
 
-#: ../src/newmain.c:245
+#: ../src/newmain.c:244
 #, c-format
 msgid "Messages are already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:252
+#: ../src/newmain.c:251
 #, c-format
 msgid "Messages are now on.\n"
 msgstr ""
 
-#: ../src/newmain.c:254
+#: ../src/newmain.c:253
 #, c-format
 msgid "Messages already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:268
+#: ../src/newmain.c:267
 #, c-format
 msgid "You will NOT be informed of logins/outs.\n"
 msgstr ""
 
-#: ../src/newmain.c:270
+#: ../src/newmain.c:269
 #, c-format
 msgid "You are already not informed of logins.\n"
 msgstr ""
 
-#: ../src/newmain.c:277
+#: ../src/newmain.c:276
 #, c-format
 msgid "You now WILL be informed of logins/outs\n"
 msgstr ""
 
-#: ../src/newmain.c:279
+#: ../src/newmain.c:278
 #, c-format
 msgid "You are already informed of logins/outs.\n"
 msgstr ""
 
-#: ../src/newmain.c:292
+#: ../src/newmain.c:291
 #, c-format
 msgid "Colours disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:294
+#: ../src/newmain.c:293
 #, c-format
 msgid "Colour enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:296
+#: ../src/newmain.c:295
 #, c-format
 msgid "No colour scheme loaded.\n"
 msgstr ""
 
-#: ../src/newmain.c:297
+#: ../src/newmain.c:296
 #, c-format
 msgid "Current colour scheme: %d: %s\n"
 msgstr ""
 
-#: ../src/newmain.c:310
+#: ../src/newmain.c:309
 #, c-format
 msgid "Error opening colour scheme list - %s\n"
 msgstr ""
 
-#: ../src/newmain.c:314
+#: ../src/newmain.c:313
 #, c-format
 msgid "Listing available colour schemes:-\n"
 msgstr ""
 
-#: ../src/newmain.c:342
+#: ../src/newmain.c:341
 #, c-format
 msgid "No colour schemes found.\n"
 msgstr ""
 
-#: ../src/newmain.c:356
+#: ../src/newmain.c:355
 #, c-format
 msgid "ERROR: Cannot open colour scheme '%d'\n"
 msgstr ""
 
-#: ../src/newmain.c:371
+#: ../src/newmain.c:370
 #, c-format
 msgid "Colour mode now disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:373
+#: ../src/newmain.c:372
 #, c-format
 msgid "Colour mode already disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:380
+#: ../src/newmain.c:379
 #, c-format
 msgid "Colour mode now enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:382
+#: ../src/newmain.c:381
 #, c-format
 msgid "Colour mode already enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:396
+#: ../src/newmain.c:395
 #, c-format
 msgid "You will NOT hear any beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:398
+#: ../src/newmain.c:397
 #, c-format
 msgid "You have already turned beeps off.\n"
 msgstr ""
 
-#: ../src/newmain.c:405
+#: ../src/newmain.c:404
 #, c-format
 msgid "You now WILL get beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:407
+#: ../src/newmain.c:406
 #, c-format
 msgid "You are already getting beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:421
+#: ../src/newmain.c:420
 #, c-format
 msgid "You will no longer receive wizchat.\n"
 msgstr ""
 
-#: ../src/newmain.c:423
+#: ../src/newmain.c:422
 #, c-format
 msgid "You have already turned wizchat off.\n"
 msgstr ""
 
-#: ../src/newmain.c:430
+#: ../src/newmain.c:429
 #, c-format
 msgid "You will now receive wizchat messages.\n"
 msgstr ""
 
-#: ../src/newmain.c:432
+#: ../src/newmain.c:431
 #, c-format
 msgid "You already receive wizchat messages.\n"
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 #, c-format
 msgid "Forcing Subscription to folder %s "
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 msgid "Off"
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 msgid "On"
 msgstr ""
 
-#: ../src/newmain.c:451
+#: ../src/newmain.c:450
 #, c-format
 msgid ""
 "Failed\n"
 "Unknown folder name %s\n"
 msgstr ""
 
-#: ../src/newmain.c:455
+#: ../src/newmain.c:454
 #, c-format
 msgid ", Done.\n"
 msgstr ""
 
-#: ../src/newmain.c:469
+#: ../src/newmain.c:468
 #, c-format
 msgid "Wiz! Bang! - You're a wizard again.\n"
 msgstr ""
 
-#: ../src/newmain.c:471
+#: ../src/newmain.c:470
 #, c-format
 msgid "You are already a wizard.\n"
 msgstr ""
 
-#: ../src/newmain.c:479
+#: ../src/newmain.c:478
 #, c-format
 msgid "!gnaB !ziW - You feel rather normal.\n"
 msgstr ""
 
-#: ../src/newmain.c:481
+#: ../src/newmain.c:480
 #, c-format
 msgid "You are already rather normal.\n"
 msgstr ""
 
-#: ../src/newmain.c:510
+#: ../src/newmain.c:509
 #, c-format
 msgid "You have been sent to 'coventry' you are not allowed to talk to anyone..\n"
 msgstr ""
 
-#: ../src/newmain.c:556
+#: ../src/newmain.c:555
 #, c-format
 msgid "Sorry, message is %d character%s too long (would be truncated to: '%s'). Try again.\n"
 msgstr ""
 
-#: ../src/newmain.c:568
+#: ../src/newmain.c:567
 #, c-format
 msgid "You are marked as doing nothing.\n"
 msgstr ""
 
-#: ../src/newmain.c:578
+#: ../src/newmain.c:577
 #, c-format
 msgid "Current folder = %s\n"
 msgstr ""
 
-#: ../src/newmain.c:580
+#: ../src/newmain.c:579
 #, c-format
 msgid "You haven't read any messages in this folder yet.\n"
 msgstr ""
 
-#: ../src/newmain.c:582
+#: ../src/newmain.c:581
 #, c-format
 msgid "You last read message %d.\n"
 msgstr ""
 
-#: ../src/newmain.c:594
+#: ../src/newmain.c:593
 #, c-format
 msgid "You are not permitted to read this folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:604
+#: ../src/newmain.c:685
 #, c-format
 msgid "WARNING: This command should not be run whilst people are using\n"
 msgstr ""
 
-#: ../src/newmain.c:605
+#: ../src/newmain.c:686
 #, c-format
 msgid "         the bulletin board, please exercise caution.\n"
 msgstr ""
 
-#: ../src/newmain.c:621
+#: ../src/newmain.c:822
 #, c-format
 msgid "Could not lockboard.\n"
 msgstr ""
 
-#: ../src/newmain.c:625
+#: ../src/newmain.c:826
 #, c-format
 msgid "Board now locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:630
+#: ../src/newmain.c:831
 #, c-format
 msgid "Already Locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:637
+#: ../src/newmain.c:838
 #, c-format
 msgid "Board now unlocked.\n"
 msgstr ""
 
-#: ../src/newmain.c:640
+#: ../src/newmain.c:841
 #, c-format
 msgid "Board not locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:642
+#: ../src/newmain.c:843
 #, c-format
 msgid "Do you want to lock or unlock it.\n"
 msgstr ""
 
-#: ../src/newmain.c:671
+#: ../src/newmain.c:872
 msgid "Enter old password: "
 msgstr ""
 
-#: ../src/newmain.c:672
+#: ../src/newmain.c:873
 #, c-format
 msgid "Incorrect.\n"
 msgstr ""
 
-#: ../src/newmain.c:676
+#: ../src/newmain.c:877
 msgid "New password: "
 msgstr ""
 
-#: ../src/newmain.c:679
+#: ../src/newmain.c:880
 #, c-format
 msgid "Did not match.\n"
 msgstr ""
 
-#: ../src/newmain.c:684
+#: ../src/newmain.c:885
 #, c-format
 msgid "Password set.\n"
 msgstr ""
 
-#: ../src/newmain.c:693
+#: ../src/newmain.c:894
 #, c-format
 msgid "You are already subscribed to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:697
+#: ../src/newmain.c:898
 #, c-format
 msgid "Resubscribing to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:704
+#: ../src/newmain.c:905
 #, c-format
 msgid "Already Unsubscribed from %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:721
+#: ../src/newmain.c:922
 #, c-format
 msgid "You are already at the beginning of the folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:727
+#: ../src/newmain.c:928
 #, c-format
 msgid "You are already at the end of this folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:739
+#: ../src/newmain.c:940
 #, c-format
 msgid "Current Status of %s\n"
 msgstr ""
 
-#: ../src/newmain.c:740
+#: ../src/newmain.c:941
 #, c-format
 msgid "Your real name is %s\n"
 msgstr ""
 
-#: ../src/newmain.c:741
+#: ../src/newmain.c:942
 #, c-format
 msgid "Your contact address is %s\n"
 msgstr ""
 
-#: ../src/newmain.c:742
+#: ../src/newmain.c:943
 #, c-format
 msgid "Your current status is [%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:743
+#: ../src/newmain.c:944
 #, c-format
 msgid "Special settings are [%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:754
+#: ../src/newmain.c:955
 #, c-format
 msgid "Talker modes=[%s] privs=[%s] protection=[%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:760
+#: ../src/newmain.c:961
 #, c-format
 msgid "Talker modes=[%s] privs=[%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 #, c-format
 msgid "You have set messages %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 msgid "off"
 msgstr ""
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 msgid "on"
 msgstr ""
 
-#: ../src/newmain.c:763
+#: ../src/newmain.c:964
 #, c-format
 msgid "You %s be informed of logins and logouts\n"
 msgstr ""
 
-#: ../src/newmain.c:763 ../src/newmain.c:764 ../src/newmain.c:774
+#: ../src/newmain.c:964 ../src/newmain.c:965 ../src/newmain.c:975
 msgid "will not"
 msgstr ""
 
-#: ../src/newmain.c:763 ../src/newmain.c:764 ../src/newmain.c:774
+#: ../src/newmain.c:964 ../src/newmain.c:965 ../src/newmain.c:975
 msgid "will"
 msgstr ""
 
-#: ../src/newmain.c:764
+#: ../src/newmain.c:965
 #, c-format
 msgid "You %s hear beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:767
+#: ../src/newmain.c:968
 #, c-format
 msgid "You can use wizchat"
 msgstr ""
 
-#: ../src/newmain.c:769
+#: ../src/newmain.c:970
 #, c-format
 msgid ", but you will not hear any replies"
 msgstr ""
 
-#: ../src/newmain.c:773
+#: ../src/newmain.c:974
 #, c-format
 msgid "You %s informed of user status changes.\n"
 msgstr ""
 
-#: ../src/newmain.c:775
+#: ../src/newmain.c:976
 #, c-format
 msgid "You belong to the following group(s) [%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:776
+#: ../src/newmain.c:977
 #, c-format
 msgid "You are currently in folder %s, which you "
 msgstr ""
 
-#: ../src/newmain.c:777
+#: ../src/newmain.c:978
 #, c-format
 msgid "are"
 msgstr ""
 
-#: ../src/newmain.c:777
+#: ../src/newmain.c:978
 #, c-format
 msgid "are not"
 msgstr ""
 
-#: ../src/newmain.c:778
+#: ../src/newmain.c:979
 #, c-format
 msgid " subscribed to.\n"
 msgstr ""
 
-#: ../src/newmain.c:780
+#: ../src/newmain.c:981
 #, c-format
 msgid "You will not be timed out for being idle.\n"
 msgstr ""
 
-#: ../src/newmain.c:782
+#: ../src/newmain.c:983
 #, c-format
 msgid "You will be timed out after being idle for %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:819
+#: ../src/newmain.c:1020
 #, c-format
 msgid "You have to read a message before you can reply to it.\n"
 msgstr ""
 
-#: ../src/newmain.c:822
+#: ../src/newmain.c:1023
 #, c-format
 msgid "Replying to message %d.\n"
 msgstr ""
 
-#: ../src/newmain.c:836
+#: ../src/newmain.c:1037
 #, c-format
 msgid "No folders found.\n"
 msgstr ""
 
-#: ../src/newmain.c:841
+#: ../src/newmain.c:1042
 #, c-format
 msgid "Marking ALL folders as read.\n"
 msgstr ""
 
-#: ../src/newmain.c:861
+#: ../src/newmain.c:1062
 #, c-format
 msgid "There is no folder '%s'\n"
 msgstr ""
 
-#: ../src/newmain.c:867
+#: ../src/newmain.c:1068
 #, c-format
 msgid "There is no folder %s\n"
 msgstr ""
 
-#: ../src/newmain.c:878
+#: ../src/newmain.c:1079
 #, c-format
 msgid "Marking folder %s as read.\n"
 msgstr ""
 
-#: ../src/newmain.c:886
+#: ../src/newmain.c:1087
 #, c-format
 msgid "Current time and date is %s"
 msgstr ""
 
-#: ../src/newmain.c:954 ../src/newmain.c:978
+#: ../src/newmain.c:1155 ../src/newmain.c:1179
 #, c-format
 msgid "TIMEOUT must be at least 10 minutes.\n"
 msgstr ""
 
-#: ../src/newmain.c:970
+#: ../src/newmain.c:1171
 #, c-format
 msgid "Invalid time unit '%c' must be one of: dhms.\n"
 msgstr ""
 
-#: ../src/newmain.c:984
+#: ../src/newmain.c:1185
 #, c-format
 msgid "TIMEOUT now set to %s\n"
 msgstr ""
 
-#: ../src/newmain.c:986
+#: ../src/newmain.c:1187
 #, c-format
 msgid "TIMEOUT was already set to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:1001
+#: ../src/newmain.c:1202
 #, c-format
 msgid "Timestamps now disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:1003
+#: ../src/newmain.c:1204
 #, c-format
 msgid "Timestamping was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1010
+#: ../src/newmain.c:1211
 #, c-format
 msgid "Timestamps now enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:1012
+#: ../src/newmain.c:1213
 #, c-format
 msgid "Timestamping already enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:1026
+#: ../src/newmain.c:1227
 #, c-format
 msgid "Posting information now suppressed.\n"
 msgstr ""
 
-#: ../src/newmain.c:1028
+#: ../src/newmain.c:1229
 #, c-format
 msgid "Posting info was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1035
+#: ../src/newmain.c:1236
 #, c-format
 msgid "You will now be informed of new postings.\n"
 msgstr ""
 
-#: ../src/newmain.c:1037
+#: ../src/newmain.c:1238
 #, c-format
 msgid "Posting info was already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:1051
+#: ../src/newmain.c:1252
 #, c-format
 msgid "User change information now suppressed.\n"
 msgstr ""
 
-#: ../src/newmain.c:1053
+#: ../src/newmain.c:1254
 #, c-format
 msgid "Change info was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1060
+#: ../src/newmain.c:1261
 #, c-format
 msgid "You will now be informed of user status changes.\n"
 msgstr ""
 
-#: ../src/newmain.c:1062
+#: ../src/newmain.c:1263
 #, c-format
 msgid "Change info was already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:1073
+#: ../src/newmain.c:1274
 #, c-format
 msgid "Already in chat mode, silly.\n"
 msgstr ""
 
-#: ../src/newmain.c:1089
+#: ../src/newmain.c:1290
 #, c-format
 msgid "You are not allowed to change your contact address. Please notify a SuperUser to change this for you.\n"
 msgstr ""
 
-#: ../src/newmain.c:1096
+#: ../src/newmain.c:1297
 #, c-format
 msgid "Alias '%s' already exists. Has now been redefined!\n"
 msgstr ""
 
-#: ../src/newmain.c:1098
+#: ../src/newmain.c:1299
 #, c-format
 msgid "Alias '%s' added!\n"
 msgstr ""
 
-#: ../src/newmain.c:1106
+#: ../src/newmain.c:1307
 #, c-format
 msgid "All Aliases Destroyed!\n"
 msgstr ""
 
-#: ../src/newmain.c:1111
+#: ../src/newmain.c:1312
 #, c-format
 msgid "Alias '%s' was not found!\n"
 msgstr ""
 
-#: ../src/newmain.c:1113
+#: ../src/newmain.c:1314
 #, c-format
 msgid "Alias '%s' was destroyed...\n"
 msgstr ""
 
-#: ../src/talker.c:449 ../src/talker.c:451
+#: ../src/talker.c:441 ../src/talker.c:443
 #, c-format
 msgid "Current mwrc path: %s\n"
 msgstr ""
 
-#: ../src/talker.c:449
+#: ../src/talker.c:441
 msgid "<unset>"
 msgstr ""
 
-#: ../src/talker.c:457
+#: ../src/talker.c:449
 #, c-format
 msgid "Setting mwrc path to: %s\n"
 msgstr ""
 
-#: ../src/talker.c:536
+#: ../src/talker.c:561
 #, c-format
 msgid "User '%s' is not logged on.\n"
 msgstr ""

Modified: trunk/po/el_GR.po
===================================================================
--- trunk/po/el_GR.po	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/po/el_GR.po	2012-11-18 02:31:42 UTC (rev 1290)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gr\n"
 "Report-Msgid-Bugs-To: mw-devel at lists.sucs.org\n"
-"POT-Creation-Date: 2012-11-17 19:52+0000\n"
+"POT-Creation-Date: 2012-11-18 02:23+0000\n"
 "PO-Revision-Date: 2004-01-29 21:18+0200\n"
 "Last-Translator: Bill Giannakopoulos <hstg at billg.gr>\n"
 "Language-Team: el_GR <el at li.org>\n"
@@ -68,7 +68,7 @@
 msgid "Message must be addressed to an existing user.\n"
 msgstr "Το μήνυμα πρέπει να έχει τη διεύθυνση ενός υπάρχοντος χρήστη.\n"
 
-#: ../src/add.c:204 ../src/add.c:211 ../src/edit.c:916
+#: ../src/add.c:204 ../src/add.c:211 ../src/edit.c:918
 #, c-format
 msgid "Subject: "
 msgstr "Θέμα: "
@@ -119,7 +119,7 @@
 msgid "edit"
 msgstr "επεξεργασία"
 
-#: ../src/add.c:307 ../src/edit.c:832
+#: ../src/add.c:307 ../src/edit.c:834
 #, c-format
 msgid "Failed to set user id, aborting.\n"
 msgstr "Αποτυχία ορισμού νέας ταυτότητας χρήστη, ματαίωση.\n"
@@ -129,7 +129,7 @@
 msgid "Cannot create temporary file: %s\n"
 msgstr "Αδυναμία δημιουργίας προσωρινού αρχείου: %s\n"
 
-#: ../src/add.c:350 ../src/edit.c:865
+#: ../src/add.c:350 ../src/edit.c:867
 #, c-format
 msgid "ERROR: Could not spawn editor: %s\n"
 msgstr "ΣΦΑΛΜΑ: Δεν μπορώ να ξεκινήσω τον επεξεργαστή: %s\n"
@@ -153,126 +153,126 @@
 msgid "Warning: incomplete folder record written; folder file may be corrupt.\n"
 msgstr "Προειδοποίηση: ανολοκλήρωτη εγγραφή φακέλου εγγραφής, το αρχείο στο φάκελο μπορεί να είναι κατεστραμμένο.\n"
 
-#: ../src/alias.c:127 ../src/alias.c:137 ../src/alias.c:151 ../src/main.c:1021
+#: ../src/alias.c:127 ../src/alias.c:137 ../src/alias.c:151 ../src/main.c:1022
 #: ../src/user.c:415 ../src/user.c:452 ../src/user.c:518
 #, c-format
 msgid "---more---\r"
 msgstr "---περισσότερα---\r"
 
-#: ../src/edit.c:148
+#: ../src/edit.c:150
 #, c-format
 msgid "Username %s not found.\n"
 msgstr "Το όνομα χρήστη %s δε βρέθηκε.\n"
 
-#: ../src/edit.c:162
+#: ../src/edit.c:164
 #, c-format
 msgid "Current status set to [%s]\n"
 msgstr "Η τρέχουσα κατάσταση ορίζεται σε [%s]\n"
 
-#: ../src/edit.c:165
+#: ../src/edit.c:167
 #, c-format
 msgid "New status [+-=][%s]: "
 msgstr "Νέα κατάσταση [+-=][%s]: "
 
-#: ../src/edit.c:174
+#: ../src/edit.c:176
 #, c-format
 msgid "Do you really want to delete this user ? "
 msgstr "Θέλετε σίγουρα να διαγράψετε αυτό το χρήστη; "
 
-#: ../src/edit.c:183
+#: ../src/edit.c:185
 #, c-format
 msgid "Status set to [%s].\n"
 msgstr "Η κατάσταση ορίστηκε σε [%s].\n"
 
-#: ../src/edit.c:197
+#: ../src/edit.c:199
 #, c-format
 msgid "Current specials set to [%s]\n"
 msgstr "Τα τρέχουσα ειδικά ορίστηκαν σε [%s]\n"
 
-#: ../src/edit.c:200
+#: ../src/edit.c:202
 #, c-format
 msgid "New specials [+-=][%s]: "
 msgstr "Νέα ειδικά [+-=][%s]: "
 
-#: ../src/edit.c:206
+#: ../src/edit.c:208
 #, c-format
 msgid "Specials set to [%s].\n"
 msgstr "Τα ειδικά ορίστηκαν σε [%s].\n"
 
-#: ../src/edit.c:219
+#: ../src/edit.c:221
 #, c-format
 msgid "Current chatprivs set to [%s]\n"
 msgstr "Τα τρέχοντα προσωπικά μηνύματα ορίστικαν σε [%s]\n"
 
-#: ../src/edit.c:220
+#: ../src/edit.c:222
 #, c-format
 msgid "New chatprivs [+-=][%s]: "
 msgstr "Νέα προσωπικά μηνύματα [+-=][%s]: "
 
-#: ../src/edit.c:225
+#: ../src/edit.c:227
 #, c-format
 msgid "Chatprivs set to [%s].\n"
 msgstr "Τα προσωπικά μηνύματα ορίστικαν σε [%s].\n"
 
-#: ../src/edit.c:243
+#: ../src/edit.c:245
 #, c-format
 msgid "Current protection set to %s\n"
 msgstr "Η τρέχουσα προστασία ορίστηκε σε %s\n"
 
-#: ../src/edit.c:244
+#: ../src/edit.c:246
 #, c-format
 msgid "New levels [0-4]/[0-4]: "
 msgstr "Νέα επίπεδα [0-4]/[0-4]: "
 
-#: ../src/edit.c:255
+#: ../src/edit.c:257
 #, c-format
 msgid "Protection set to %d/%d.\n"
 msgstr "Η προστασία ορίστικε σε %d/%d.\n"
 
-#: ../src/edit.c:265
+#: ../src/edit.c:267
 #, c-format
 msgid "Invalid protection level.\n"
 msgstr "Εσφαλμένο επίπεδο προστασίας.\n"
 
-#: ../src/edit.c:275
+#: ../src/edit.c:277
 #, c-format
 msgid "Current chatmode set to [%s]\n"
 msgstr "Η τρέχουσα κατάσταση ομιλίας ορίστηκε σε [%s]\n"
 
-#: ../src/edit.c:276
+#: ../src/edit.c:278
 #, c-format
 msgid "New chatmode [+-=][%s]: "
 msgstr "Νέα κατάσταση ομιλίας [+-=][%s]: "
 
-#: ../src/edit.c:281
+#: ../src/edit.c:283
 #, c-format
 msgid "Chatmode set to [%s].\n"
 msgstr "Η κατάσταση ομιλίς ορίστηκε σε [%s].\n"
 
-#: ../src/edit.c:298
+#: ../src/edit.c:300
 #, c-format
 msgid "User currently in groups [%s]\n"
 msgstr "Ο χρήστης τώρα σε ομάδες [%s]\n"
 
-#: ../src/edit.c:299
+#: ../src/edit.c:301
 #, c-format
 msgid "New Groups [+-=][12345678]: "
 msgstr "Νέες Ομάδες [+-=][12345678]: "
 
-#: ../src/edit.c:309 ../src/edit.c:675
+#: ../src/edit.c:311 ../src/edit.c:677
 #, c-format
 msgid "Groups changed to [%s]\n"
 msgstr "Οι ομάδες άλλαξαν σε [%s]\n"
 
-#: ../src/edit.c:318
+#: ../src/edit.c:320
 msgid "New Passwd: "
 msgstr "Νέο συνθηματικό: "
 
-#: ../src/edit.c:319 ../src/newmain.c:677
+#: ../src/edit.c:321 ../src/newmain.c:878
 msgid "Again: "
 msgstr "Ξανά: "
 
-#: ../src/edit.c:322
+#: ../src/edit.c:324
 #, c-format
 msgid ""
 "Passwords did not match.\n"
@@ -281,172 +281,172 @@
 "Τα συνθηματικά δεν ταιριάζουν.\n"
 "Δεν έγινε.\n"
 
-#: ../src/edit.c:327
+#: ../src/edit.c:329
 #, c-format
 msgid "Password changed.\n"
 msgstr "Το συνθηματικό άλλαξε.\n"
 
-#: ../src/edit.c:339
+#: ../src/edit.c:341
 #, c-format
 msgid "Real Name: %s\n"
 msgstr "Αληθινό Όνομα: %s\n"
 
-#: ../src/edit.c:340
+#: ../src/edit.c:342
 #, c-format
 msgid "Enter new name (%d chars): "
 msgstr "Εισαγωγη νέου ονόματος (%d χαρακτήρες): "
 
-#: ../src/edit.c:346 ../src/edit.c:421
+#: ../src/edit.c:348 ../src/edit.c:423
 #, c-format
 msgid "New name set.\n"
 msgstr "Το νέο όνομα ορίστηκε.\n"
 
-#: ../src/edit.c:360
+#: ../src/edit.c:362
 #, c-format
 msgid "User currently in room [%d]\n"
 msgstr "Ο χρήστης βρίσκεται στο κανάλι [%d]\n"
 
-#: ../src/edit.c:361
+#: ../src/edit.c:363
 #, c-format
 msgid "New Room: [0-65535]: "
 msgstr "Νέο Κανάλι: [0-65535]: "
 
-#: ../src/edit.c:367 ../src/edit.c:373
+#: ../src/edit.c:369 ../src/edit.c:375
 #, c-format
 msgid "Invalid Room ID (0-65535 only)\n"
 msgstr "Εσφαλμένη Ταυτότητα Καναλιού (μόνο 0-65535)\n"
 
-#: ../src/edit.c:379
+#: ../src/edit.c:381
 #, c-format
 msgid "Room changed to %d.\n"
 msgstr "Το κανάλι άλλαξε σε %d.\n"
 
-#: ../src/edit.c:389
+#: ../src/edit.c:391
 #, c-format
 msgid "WARNING: This command can be very dangerous !\n"
 msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η εντολή μπορεί να είναι πολύ επικίνδυνη !\n"
 
-#: ../src/edit.c:390
+#: ../src/edit.c:392
 #, c-format
 msgid "User Name: %s\n"
 msgstr "Όνομα Χρήστη: %s\n"
 
-#: ../src/edit.c:391
+#: ../src/edit.c:393
 #, c-format
 msgid "Enter new username (%d chars): "
 msgstr "Εισαγωγή νέου ονόματος χρήστη (%d χαρακτήρες): "
 
-#: ../src/edit.c:408
+#: ../src/edit.c:410
 #, c-format
 msgid "You cannot change a username to one that already exists.\n"
 msgstr "Δεν μπορείτε να αλλάξετε ένα όνομα χρήστη σε κάποιο που υπάρχει ήδη.\n"
 
-#: ../src/edit.c:411
+#: ../src/edit.c:413
 #, c-format
 msgid "Attempting to update existing user.\n"
 msgstr "Προσπάθεια ενημέρωσης νέου χρήστη.\n"
 
-#: ../src/edit.c:414
+#: ../src/edit.c:416
 #, c-format
 msgid "Are you sure you want to change user '%s' into user '%s' ? "
 msgstr "Είστε σιγουρος ότι θέλετε να αλλάξετε το χρήστη '%s' σε χρήστη '%s' ; "
 
-#: ../src/edit.c:425 ../src/edit.c:427
+#: ../src/edit.c:427 ../src/edit.c:429
 #, c-format
 msgid "Change Cancelled.\n"
 msgstr "Η αλλαγή ακυρώθηκε.\n"
 
-#: ../src/edit.c:432 ../src/edit.c:986
+#: ../src/edit.c:434 ../src/edit.c:988
 #, c-format
 msgid "Contact address: %s\n"
 msgstr "Διεύθυνση επικοινωνίας: %s\n"
 
-#: ../src/edit.c:433 ../src/edit.c:987
+#: ../src/edit.c:435 ../src/edit.c:989
 #, c-format
 msgid "New address (%d chars): "
 msgstr "Νέα διεύθυνση (%d χαρακτήρες): "
 
-#: ../src/edit.c:439 ../src/edit.c:992
+#: ../src/edit.c:441 ../src/edit.c:994
 #, c-format
 msgid "New address set.\n"
 msgstr "Η νέα διεύθυνση ορίστηκε.\n"
 
-#: ../src/edit.c:447
+#: ../src/edit.c:449
 #, fuzzy, c-format
 msgid "Current Status: %s\n"
 msgstr "Η τρέχουσα κατάσταση ορίζεται σε [%s]\n"
 
-#: ../src/edit.c:448
+#: ../src/edit.c:450
 #, fuzzy, c-format
 msgid "New Status (%d chars): "
 msgstr "Νέα διεύθυνση (%d χαρακτήρες): "
 
-#: ../src/edit.c:455 ../src/edit.c:462
+#: ../src/edit.c:457 ../src/edit.c:464
 #, fuzzy, c-format
 msgid "New status set.\n"
 msgstr "Το νέο όνομα ορίστηκε.\n"
 
-#: ../src/edit.c:472
+#: ../src/edit.c:474
 #, c-format
 msgid "Timeout: %ld sec.\n"
 msgstr "Τέλος χρόνου: %ld δεύτερα.\n"
 
-#: ../src/edit.c:473
+#: ../src/edit.c:475
 #, fuzzy, c-format
 msgid "New timeout value: "
 msgstr "Νέα τιμή για τέλος χρόνου (δευτερόλεπτα): "
 
-#: ../src/edit.c:494
+#: ../src/edit.c:496
 #, c-format
 msgid "TIMEOUT now disabled.\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ απενεργοποιήθηκε.\n"
 
-#: ../src/edit.c:500
+#: ../src/edit.c:502
 #, c-format
 msgid "TIMEOUT was already disabled.\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ έχει ήδη απενεργοποιηθεί.\n"
 
-#: ../src/edit.c:505
+#: ../src/edit.c:507
 #, fuzzy, c-format
 msgid "TIMEOUT must be be at least 10 minutes (600), or 0 to disable.\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ πρέπει να είνα ιμεταξύ 10 λεπτά (600), και 3 'ώρες (10800), or 0 to disable.\n"
 
-#: ../src/edit.c:513
-#, c-format
-msgid "New timeout set to %ld seconds.\n"
+#: ../src/edit.c:515
+#, fuzzy, c-format
+msgid "New timeout set to %<PRId32> seconds.\n"
 msgstr "Νέο τέλος χρόνου ορισμένο στα %ld seconds.\n"
 
-#: ../src/edit.c:522
+#: ../src/edit.c:524
 #, c-format
 msgid "Lastread in folder? "
 msgstr "Τελευταία ανάγνωση στο φάκελο; "
 
-#: ../src/edit.c:527
+#: ../src/edit.c:529
 #, c-format
 msgid "Folder not found.\n"
 msgstr "Ο φάκελος δεν βρέθηκε.\n"
 
-#: ../src/edit.c:530
+#: ../src/edit.c:532
 #, c-format
 msgid "Last read message number %d\n"
 msgstr "Τελευταίο ανεγνωσμένο μήνυμα αριθμό %d\n"
 
-#: ../src/edit.c:531
+#: ../src/edit.c:533
 #, c-format
 msgid "New lastread: "
 msgstr "Νέο τελευταίο αναγνωσμένο: "
 
-#: ../src/edit.c:537
+#: ../src/edit.c:539
 #, c-format
 msgid "Lastread changed to %d\n"
 msgstr "Το τελευταίο αναγνωσμένο άλλαξε σε %d\n"
 
-#: ../src/edit.c:541
+#: ../src/edit.c:543
 #, c-format
 msgid "Not changed.\n"
 msgstr "Χωρίς αλλαγές.\n"
 
-#: ../src/edit.c:551
+#: ../src/edit.c:553
 #, c-format
 msgid ""
 "Username: %s\n"
@@ -455,7 +455,7 @@
 "Όνομα χρήστη: %s\n"
 "Αληθινό Όνομα: %s\n"
 
-#: ../src/edit.c:552
+#: ../src/edit.c:554
 #, c-format
 msgid ""
 "Contact: %s\n"
@@ -464,62 +464,62 @@
 "Επικοινωνία: %s\n"
 "Κατάσταση [%s]\tΕιδικά [%s]\n"
 
-#: ../src/edit.c:555 ../src/edit.c:737
+#: ../src/edit.c:557 ../src/edit.c:739
 #, c-format
 msgid "Groups [%s]\n"
 msgstr "Ομάδες [%s]\n"
 
-#: ../src/edit.c:558
+#: ../src/edit.c:560
 #, c-format
 msgid "Talker: Modes=[%s]  Privs=[%s]  Protection=[%s]\n"
 msgstr "Ομιλητής: Καταστάσεις=[%s]  Ιδιαίτερα=[%s]  Προστασία=[%s]\n"
 
-#: ../src/edit.c:564
+#: ../src/edit.c:566
 #, c-format
 msgid "Timeout disabled.\n"
 msgstr "Το τέλος χρόνου είναι απενεργοποιημένο.\n"
 
-#: ../src/edit.c:566
+#: ../src/edit.c:568
 #, c-format
 msgid "Timeout set to %s.\n"
 msgstr "Το τέλος χρόνου ορίστηκε σε %s.\n"
 
-#: ../src/edit.c:568
+#: ../src/edit.c:570
 #, c-format
 msgid "Last Login: %s"
 msgstr "Τελευταία Σύνδεση: %s"
 
-#: ../src/edit.c:571
+#: ../src/edit.c:573
 #, fuzzy, c-format
 msgid "Status: %s (%s ago)\n"
 msgstr "Η θέση είναι ορισμένη σε [%s]\n"
 
-#: ../src/edit.c:577
+#: ../src/edit.c:579
 #, c-format
 msgid "Are you sure you want to clear %s's ignore list? "
 msgstr "Είστε σίγουρος ότι θέλετε να καθαρίσετε την λίστα αγνόησης του %s; "
 
-#: ../src/edit.c:583
+#: ../src/edit.c:585
 #, c-format
 msgid "Ignorelist Cleared.\n"
 msgstr "Η λίστα Αγνόησης Καθάρισε.\n"
 
-#: ../src/edit.c:587
+#: ../src/edit.c:589
 #, c-format
 msgid "Clear Cancelled.\n"
 msgstr "Η Εκαθάριση Ακυρώθηκε.\n"
 
-#: ../src/edit.c:590
+#: ../src/edit.c:592
 #, c-format
 msgid "Unknown Command\n"
 msgstr "Άγνωστη Εντολή\n"
 
-#: ../src/edit.c:628
+#: ../src/edit.c:630
 #, c-format
 msgid "Unknown folder name.\n"
 msgstr "Άγνωστο όνομα φακέλου.\n"
 
-#: ../src/edit.c:635
+#: ../src/edit.c:637
 #, c-format
 msgid ""
 "Folder %s\n"
@@ -528,97 +528,97 @@
 "Φάκελος %s\n"
 "Τρέχουσα κατάσταση:-\n"
 
-#: ../src/edit.c:636
+#: ../src/edit.c:638
 #, c-format
 msgid "User not in group [%s]\n"
 msgstr "Ο χρήστης δεν είναι στην ομάδα [%s]\n"
 
-#: ../src/edit.c:638
+#: ../src/edit.c:640
 #, c-format
 msgid "User in group [%s]\n"
 msgstr "Ο χρήστης στην ομάδα [%s]\n"
 
-#: ../src/edit.c:639
+#: ../src/edit.c:641
 #, c-format
 msgid "Change to :-\n"
 msgstr "Αλλαγή σε :-\n"
 
-#: ../src/edit.c:640
+#: ../src/edit.c:642
 #, c-format
 msgid "User not in group [+-=][arwRWpm]: "
 msgstr "Ο χρήστης δεν είναι σε ομάδα [+-=][arwRWpm]: "
 
-#: ../src/edit.c:647 ../src/edit.c:658
+#: ../src/edit.c:649 ../src/edit.c:660
 #, c-format
 msgid "Status changed to [%s]\n"
 msgstr "Η κατάσταση άλλαξε σε [%s]\n"
 
-#: ../src/edit.c:649 ../src/edit.c:660
+#: ../src/edit.c:651 ../src/edit.c:662
 #, c-format
 msgid "WARNING: folder may get written over by the next folder created.\n"
 msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ο φάκελος μπορεί να γραφτείαπό πάνω από τον επόμενο φάκελο που δημιουργείται.\n"
 
-#: ../src/edit.c:651
+#: ../src/edit.c:653
 #, c-format
 msgid "User in group [+-=][arwRWpm]: "
 msgstr "Ο χρήστης στην ομάδα [+-=][arwRWpm]: "
 
-#: ../src/edit.c:667
+#: ../src/edit.c:669
 #, c-format
 msgid "Folder %s is currently in groups [%s]\n"
 msgstr "Ο φάκελος  %s είναι τώρα στις ομάδες [%s]\n"
 
-#: ../src/edit.c:668
+#: ../src/edit.c:670
 #, c-format
 msgid "Folder groups [+-=][12345678]: "
 msgstr "Φάκελος ομάδων [+-=][12345678]: "
 
-#: ../src/edit.c:680
+#: ../src/edit.c:682
 #, c-format
 msgid "Current folder name = %s\n"
 msgstr "Τρέχων όνομα φακέλου = %s\n"
 
-#: ../src/edit.c:681
+#: ../src/edit.c:683
 #, c-format
 msgid "Change to ? (%d chars): "
 msgstr "Αλλαγή σε ? (%d χαρακτήρες): "
 
-#: ../src/edit.c:705
+#: ../src/edit.c:707
 #, c-format
 msgid "Name changed to %s\n"
 msgstr "Το όνομα άλλαξε σε %s\n"
 
-#: ../src/edit.c:710
+#: ../src/edit.c:712
 #, c-format
 msgid "First Message in folder is %d\n"
 msgstr "Το πρώτο μήνυμα στο φάκελο είναι %d\n"
 
-#: ../src/edit.c:711
+#: ../src/edit.c:713
 #, c-format
 msgid "New first message: "
 msgstr "Νέο πρώτο μήνυμα: "
 
-#: ../src/edit.c:716
+#: ../src/edit.c:718
 #, c-format
 msgid "First message set to %d\n"
 msgstr "Το πρώτο μήνυμα ορίστηκε σε %d\n"
 
-#: ../src/edit.c:718
+#: ../src/edit.c:720
 #, c-format
 msgid "Last Message in folder is %d\n"
 msgstr "Το τελευταίο μήνυμα στο φάκελο είναι %d\n"
 
-#: ../src/edit.c:719
+#: ../src/edit.c:721
 #, c-format
 msgid "New Last message: "
 msgstr "Νέο Τελευταίο Μήνυμα: "
 
-#: ../src/edit.c:724
+#: ../src/edit.c:726
 #, c-format
 msgid "Last message set to %d\n"
 msgstr "Το τελευταίο μήνυμα ορίστηκε σε %d\n"
 
-#: ../src/edit.c:731
+#: ../src/edit.c:733
 #, c-format
 msgid ""
 "\n"
@@ -631,132 +631,132 @@
 "Θέμα: %s\n"
 "Μήκος μηνύματος %d σε %d\n"
 
-#: ../src/edit.c:733
+#: ../src/edit.c:735
 #, c-format
 msgid "Status (out of group) [%s]"
 msgstr "Κατάστση (εκτός ομάδας) [%s]"
 
-#: ../src/edit.c:735
+#: ../src/edit.c:737
 #, c-format
 msgid "    (in group) [%s]\n"
 msgstr "    (στην ομάδα) [%s]\n"
 
-#: ../src/edit.c:742
+#: ../src/edit.c:744
 #, c-format
 msgid "Current folder topic = '%s'\n"
 msgstr "Τρέχων θέμα φακέλου = '%s'\n"
 
-#: ../src/edit.c:743
+#: ../src/edit.c:745
 #, c-format
 msgid "New topic (%d chars): "
 msgstr "Νέο θέμα (%d χαρακτήρες): "
 
-#: ../src/edit.c:748
+#: ../src/edit.c:750
 #, c-format
 msgid "Topic changed to '%s'\n"
 msgstr "Το θέμα άλλαξε σε '%s'\n"
 
-#: ../src/edit.c:754
+#: ../src/edit.c:756
 #, c-format
 msgid "Do you really want to delete folder %s  ?(yes/no) "
 msgstr "Είστε σίγουρος ότι θέλετε να διαγράψετε το φάκελο %s  ?(yes/no) "
 
-#: ../src/edit.c:773
+#: ../src/edit.c:775
 #, c-format
 msgid "Folder Deleted.\n"
 msgstr "Ο φάκελος διεγράφη.\n"
 
-#: ../src/edit.c:777 ../src/edit.c:910 ../src/edit.c:923
+#: ../src/edit.c:779 ../src/edit.c:912 ../src/edit.c:925
 #, c-format
 msgid "Not Done.\n"
 msgstr "Δεν έγινε.\n"
 
-#: ../src/edit.c:809
+#: ../src/edit.c:811
 #, c-format
 msgid "Message %d not found.\n"
 msgstr "Το μήνυμα %d δεν βρέθηκε.\n"
 
-#: ../src/edit.c:818
+#: ../src/edit.c:820
 #, c-format
 msgid "You cannot edit other peoples messages.\n"
 msgstr "Δεν μπορείτε να επεξεργαστείτε τα μηνύματα άλλων.\n"
 
-#: ../src/edit.c:902
+#: ../src/edit.c:904
 #, c-format
 msgid "Currently to '%s'.\n"
 msgstr "Τρέχοντα σε '%s'.\n"
 
-#: ../src/edit.c:903
+#: ../src/edit.c:905
 #, c-format
 msgid "to: "
 msgstr "σε: "
 
-#: ../src/edit.c:907
+#: ../src/edit.c:909
 #, c-format
 msgid "Message now to '%s'\n"
 msgstr "Μήνυμα τώρα στον '%s'\n"
 
-#: ../src/edit.c:915
+#: ../src/edit.c:917
 #, c-format
 msgid "Current subject is '%s'.\n"
 msgstr "Το τρέχων θέμα είναι '%s'.\n"
 
-#: ../src/edit.c:920
+#: ../src/edit.c:922
 #, c-format
 msgid "Subject '%s'\n"
 msgstr "Θέμα '%s'\n"
 
-#: ../src/edit.c:928
+#: ../src/edit.c:930
 #, c-format
 msgid "Message Marked for deletion.\n"
 msgstr "Το μήνυμα σημειώθηκε για διαγραφή.\n"
 
-#: ../src/edit.c:933
+#: ../src/edit.c:935
 #, c-format
 msgid "Message has been undeleted.\n"
 msgstr "Το μήνυμα επαναφέρθηκε.\n"
 
-#: ../src/edit.c:939
+#: ../src/edit.c:941
 #, c-format
 msgid "Status mode is currently %s\n"
 msgstr "Κατάσταση θέσης είναι τώρα %s\n"
 
-#: ../src/edit.c:941
+#: ../src/edit.c:943
 #, c-format
 msgid "New status [%s]: "
 msgstr "Νέα θέση [%s]: "
 
-#: ../src/edit.c:947 ../src/user.c:270
+#: ../src/edit.c:949 ../src/user.c:270
 #, c-format
 msgid "Status set to [%s]\n"
 msgstr "Η θέση είναι ορισμένη σε [%s]\n"
 
-#: ../src/edit.c:951
+#: ../src/edit.c:953
 #, c-format
 msgid "What do you want to do ?\n"
 msgstr "Τι θέλετε να κάνω; \n"
 
-#: ../src/edit.c:972
+#: ../src/edit.c:974
 #, c-format
 msgid "Total Login Time of "
 msgstr "Συνολικός Χρόνος Σύνδεσης του "
 
-#: ../src/edit.c:974
+#: ../src/edit.c:976
 #, c-format
 msgid "%d day%s, "
 msgstr "%d μέρα%s, "
 
-#: ../src/edit.c:976
+#: ../src/edit.c:978
 #, c-format
 msgid "%d hour%s, "
 msgstr "%d ώρα%s, "
 
-#: ../src/edit.c:978
+#: ../src/edit.c:980
 #, c-format
 msgid "%d minute%s, "
 msgstr "%d λεπτό%s, "
 
-#: ../src/edit.c:979
+#: ../src/edit.c:981
 #, c-format
 msgid "%d second%s.\n"
 msgstr "%d δευτερόλεπτο%s.\n"
@@ -885,126 +885,141 @@
 msgid "\"%s--\" says Zebedee\n"
 msgstr ""
 
-#: ../src/init.c:130
+#: ../src/init.c:97
 #, c-format
 msgid "Cannot load \"%s\": Illegal path\n"
 msgstr ""
 
-#: ../src/init.c:143
+#: ../src/init.c:110
 #, c-format
 msgid "Error reading %s: Not a regular file\n"
 msgstr ""
 
-#: ../src/init.c:150
+#: ../src/init.c:117
 #, c-format
 msgid "Error reading %s: %s\n"
 msgstr ""
 
-#: ../src/init.c:181 ../src/init.c:188
+#: ../src/init.c:148 ../src/init.c:155
 #, c-format
 msgid "Malformed alias in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:196
+#: ../src/init.c:163
 #, c-format
 msgid "Alias %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:204 ../src/init.c:211
+#: ../src/init.c:171 ../src/init.c:178
 #, c-format
 msgid "Malformed bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:219
+#: ../src/init.c:186
 #, c-format
 msgid "Bind %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:227 ../src/init.c:234
+#: ../src/init.c:194 ../src/init.c:201
 #, c-format
 msgid "Malformed rpc bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:242
+#: ../src/init.c:209
 #, c-format
 msgid "RPC Bind %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:250 ../src/init.c:269
+#: ../src/init.c:217 ../src/init.c:236
 #, c-format
 msgid "Malformed include in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:281
+#: ../src/init.c:248
 #, c-format
 msgid "Malformed event bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:289
+#: ../src/init.c:256
 #, c-format
 msgid "Event bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:297
+#: ../src/init.c:264
 #, c-format
 msgid "Malformed ipc in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:305
+#: ../src/init.c:272
 #, c-format
 msgid "IPC bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:313
+#: ../src/init.c:280
 #, c-format
 msgid "Malformed checkonoff bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:321
+#: ../src/init.c:288
 #, c-format
 msgid "Checkonoff bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:329
+#: ../src/init.c:296
 #, c-format
 msgid "Malformed shutdown bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:337
+#: ../src/init.c:304
 #, c-format
 msgid "Shutdown bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:345
+#: ../src/init.c:312
 #, c-format
 msgid "Malformed force bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:353
+#: ../src/init.c:320
 #, c-format
 msgid "Force bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:361 ../src/init.c:374
+#: ../src/init.c:328 ../src/init.c:341
 #, c-format
 msgid "Malformed Script Function declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:387 ../src/init.c:400
+#: ../src/init.c:354 ../src/init.c:367
 #, c-format
 msgid "Malformed Script Init declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:413 ../src/init.c:426
+#: ../src/init.c:380 ../src/init.c:393
 #, c-format
 msgid "Malformed Script BoardInit declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:434
+#: ../src/init.c:401
 #, c-format
 msgid "Loading file %s unrecognised command '%s' on line %d\n"
 msgstr ""
 
+#: ../src/init.c:427
+#, fuzzy, c-format
+msgid "Failed to get user data\n"
+msgstr "Αποτυχία ορισμού νέας ταυτότητας χρήστη, ματαίωση.\n"
+
+#: ../src/init.c:432
+#, c-format
+msgid "Failed to read init file %s/%s\n"
+msgstr ""
+
+#: ../src/init.c:439
+#, c-format
+msgid "Could not find init file %s\n"
+msgstr ""
+
 #: ../src/main.c:253
 msgid "05*** You have new mail.\n"
 msgstr "05*** Έχετε νέο μήνυμα.\n"
@@ -1093,37 +1108,37 @@
 msgid "Username not permitted.\n"
 msgstr "Δεν επιτρέπεται το όνομα χρήστη.\n"
 
-#: ../src/main.c:612 ../src/main.c:638
+#: ../src/main.c:613 ../src/main.c:639
 #, c-format
 msgid "%s: User %s not found.\n"
 msgstr "Ο%s: Χρήστης %s δεν βρέθηκε.\n"
 
-#: ../src/main.c:631
+#: ../src/main.c:632
 #, c-format
 msgid "%s: Folder %s not found.\n"
 msgstr "Ο%s: Φάκελος %s δεν βρέθηκε.\n"
 
-#: ../src/main.c:673
+#: ../src/main.c:674
 #, c-format
 msgid "The board is currently locked to normal users.\n"
 msgstr "Το επίπεδο είναι κλειδωμένο για κανονικούς χρήστες.\n"
 
-#: ../src/main.c:676
+#: ../src/main.c:677
 #, c-format
 msgid "The Board has been temporarily closed.\n"
 msgstr "Το επίπεδο είναι προσωρινά κλειστό.\n"
 
-#: ../src/main.c:677
+#: ../src/main.c:678
 #, c-format
 msgid "Please call again soon.\n"
 msgstr "Παρακαλώ καλέστε ξανά σύντομα.\n"
 
-#: ../src/main.c:694
+#: ../src/main.c:695
 #, c-format
 msgid "01%s has just entered the board."
 msgstr "01%s μόλις εισήχθη στο επίπεδο."
 
-#: ../src/main.c:718
+#: ../src/main.c:719
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -1133,32 +1148,32 @@
 "\n"
 "Τελευταία αποσύνδεση %s\n"
 
-#: ../src/main.c:720
+#: ../src/main.c:721
 #, c-format
 msgid "Type 'talker' to enter chat mode.\n"
 msgstr ""
 
-#: ../src/main.c:725
+#: ../src/main.c:726
 #, c-format
 msgid "You must register before being able to use this system fully.\n"
 msgstr ""
 
-#: ../src/main.c:726
+#: ../src/main.c:727
 #, c-format
 msgid "Until then you will not be able to write in most folders or use chat mode.\n"
 msgstr ""
 
-#: ../src/main.c:727
+#: ../src/main.c:728
 #, c-format
 msgid "Wait here for a few minutes and an administrator might register you.\n"
 msgstr ""
 
-#: ../src/main.c:729
+#: ../src/main.c:730
 #, c-format
 msgid "Type 'help' for help.\n"
 msgstr ""
 
-#: ../src/main.c:1075
+#: ../src/main.c:1076
 #, c-format
 msgid ""
 "\n"
@@ -1167,7 +1182,7 @@
 "\n"
 "Σφάλμα ανάγνωσης εισερχόμενου μηνύματος pipe. πανικός.\n"
 
-#: ../src/main.c:1079
+#: ../src/main.c:1080
 #, c-format
 msgid ""
 "\n"
@@ -1176,42 +1191,42 @@
 "\n"
 "Σφάλμα στην είσοδο του τερματικού.\n"
 
-#: ../src/main.c:1152
+#: ../src/main.c:1153
 #, c-format
 msgid "Error: Urk, no message to print.\n"
 msgstr "Σφάλμα: κανένα μήνυμα για εκτύπωση.\n"
 
-#: ../src/main.c:1368
+#: ../src/main.c:1369
 #, c-format
 msgid "*** Timed Out, Good Bye\r\n"
 msgstr "*** Τέλος Χρόνου, Στο καλό\r\n"
 
-#: ../src/main.c:1372
+#: ../src/main.c:1373
 #, c-format
 msgid "04%s has been timed out."
 msgstr "04%s του τελείωσε ο χρόνος."
 
-#: ../src/main.c:1379
+#: ../src/main.c:1380
 #, c-format
 msgid "%c*** Wakey ! Wakey !\r\n"
 msgstr "%c*** Ξύπνα ! Ξύπνα !\r\n"
 
-#: ../src/main.c:2030
+#: ../src/main.c:2031
 #, c-format
 msgid "Release version %s.%s.%s\n"
 msgstr "Τελευταία έκδοση %s.%s.%s\n"
 
-#: ../src/main.c:2032
+#: ../src/main.c:2033
 #, c-format
 msgid "Release version %s.%s\n"
 msgstr "Τελευταία έκδοση %s.%s\n"
 
-#: ../src/main.c:2034
+#: ../src/main.c:2035
 #, c-format
 msgid "Development version %s.%s.%s\n"
 msgstr "Έκδοση υπό ανάπτυξη %s.%s.%s\n"
 
-#: ../src/main.c:2036
+#: ../src/main.c:2037
 #, c-format
 msgid "Built by %s on %s\n"
 msgstr "Θεμελίωση από %s στο %s\n"
@@ -1359,7 +1374,7 @@
 msgid "Skipping this folder. %d messages left unread.\n"
 msgstr ""
 
-#: ../src/new.c:155 ../src/newmain.c:708
+#: ../src/new.c:155 ../src/newmain.c:909
 #, fuzzy, c-format
 msgid "Unsubscribing from %s.\n"
 msgstr "Μήνυμα από %s\n"
@@ -1384,636 +1399,636 @@
 msgid "            <empty>\n"
 msgstr ""
 
-#: ../src/newmain.c:77 ../src/newmain.c:116 ../src/newmain.c:140
+#: ../src/newmain.c:76 ../src/newmain.c:115 ../src/newmain.c:139
 #, c-format
 msgid "Sorry, no help available on that subject.\n"
 msgstr "Συγνώμη, δεν υπάρχει διαθέσημη βοήθεια σε αυτό το θέμα.\n"
 
-#: ../src/newmain.c:102
+#: ../src/newmain.c:101
 #, c-format
 msgid "No general help available for talker commands.\n"
 msgstr "Δεν υπάρχει διαθέσιμη γενική βοήθεια για εντολές ομιλητή.\n"
 
-#: ../src/newmain.c:156 ../src/newmain.c:162
+#: ../src/newmain.c:155 ../src/newmain.c:161
 #, fuzzy, c-format
 msgid "Unknown foldername.\n"
 msgstr "Άγνωστο όνομα φακέλου.\n"
 
-#: ../src/newmain.c:167
+#: ../src/newmain.c:166
 #, fuzzy, c-format
 msgid "Changing to folder %s.\n"
 msgstr "Εγγραφή στο φάκελο %s.\n"
 
-#: ../src/newmain.c:201 ../src/newmain.c:575
+#: ../src/newmain.c:200 ../src/newmain.c:574
 #, fuzzy, c-format
 msgid "No current folder.\n"
 msgstr "Τρέχων όνομα φακέλου = %s\n"
 
-#: ../src/newmain.c:205
+#: ../src/newmain.c:204
 #, c-format
 msgid "Moved to end of folder. (message %d)\n"
 msgstr ""
 
-#: ../src/newmain.c:213
+#: ../src/newmain.c:212
 #, c-format
 msgid "Moved to start of folder. (message %d)\n"
 msgstr ""
 
-#: ../src/newmain.c:243
+#: ../src/newmain.c:242
 #, fuzzy, c-format
 msgid "Messages are now off.\n"
 msgstr "Το μήνυμα %d δεν βρέθηκε.\n"
 
-#: ../src/newmain.c:245
+#: ../src/newmain.c:244
 #, fuzzy, c-format
 msgid "Messages are already off.\n"
 msgstr "Το μήνυμα σημειώθηκε για διαγραφή.\n"
 
-#: ../src/newmain.c:252
+#: ../src/newmain.c:251
 #, fuzzy, c-format
 msgid "Messages are now on.\n"
 msgstr "Το μήνυμα %d δεν βρέθηκε.\n"
 
-#: ../src/newmain.c:254
+#: ../src/newmain.c:253
 #, fuzzy, c-format
 msgid "Messages already on.\n"
 msgstr "Το μήνυμα σημειώθηκε για διαγραφή.\n"
 
-#: ../src/newmain.c:268
+#: ../src/newmain.c:267
 #, c-format
 msgid "You will NOT be informed of logins/outs.\n"
 msgstr ""
 
-#: ../src/newmain.c:270
+#: ../src/newmain.c:269
 #, c-format
 msgid "You are already not informed of logins.\n"
 msgstr ""
 
-#: ../src/newmain.c:277
+#: ../src/newmain.c:276
 #, c-format
 msgid "You now WILL be informed of logins/outs\n"
 msgstr ""
 
-#: ../src/newmain.c:279
+#: ../src/newmain.c:278
 #, c-format
 msgid "You are already informed of logins/outs.\n"
 msgstr ""
 
-#: ../src/newmain.c:292
+#: ../src/newmain.c:291
 #, fuzzy, c-format
 msgid "Colours disabled.\n"
 msgstr "Το τέλος χρόνου είναι απενεργοποιημένο.\n"
 
-#: ../src/newmain.c:294
+#: ../src/newmain.c:293
 #, fuzzy, c-format
 msgid "Colour enabled.\n"
 msgstr "Ο φάκελος διεγράφη.\n"
 
-#: ../src/newmain.c:296
+#: ../src/newmain.c:295
 #, c-format
 msgid "No colour scheme loaded.\n"
 msgstr ""
 
-#: ../src/newmain.c:297
+#: ../src/newmain.c:296
 #, fuzzy, c-format
 msgid "Current colour scheme: %d: %s\n"
 msgstr "Τρέχων όνομα φακέλου = %s\n"
 
-#: ../src/newmain.c:310
+#: ../src/newmain.c:309
 #, c-format
 msgid "Error opening colour scheme list - %s\n"
 msgstr ""
 
-#: ../src/newmain.c:314
+#: ../src/newmain.c:313
 #, c-format
 msgid "Listing available colour schemes:-\n"
 msgstr ""
 
-#: ../src/newmain.c:342
+#: ../src/newmain.c:341
 #, c-format
 msgid "No colour schemes found.\n"
 msgstr ""
 
-#: ../src/newmain.c:356
+#: ../src/newmain.c:355
 #, c-format
 msgid "ERROR: Cannot open colour scheme '%d'\n"
 msgstr ""
 
-#: ../src/newmain.c:371
+#: ../src/newmain.c:370
 #, fuzzy, c-format
 msgid "Colour mode now disabled.\n"
 msgstr "Το τέλος χρόνου είναι απενεργοποιημένο.\n"
 
-#: ../src/newmain.c:373
+#: ../src/newmain.c:372
 #, fuzzy, c-format
 msgid "Colour mode already disabled.\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ έχει ήδη απενεργοποιηθεί.\n"
 
-#: ../src/newmain.c:380
+#: ../src/newmain.c:379
 #, c-format
 msgid "Colour mode now enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:382
+#: ../src/newmain.c:381
 #, c-format
 msgid "Colour mode already enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:396
+#: ../src/newmain.c:395
 #, c-format
 msgid "You will NOT hear any beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:398
+#: ../src/newmain.c:397
 #, c-format
 msgid "You have already turned beeps off.\n"
 msgstr ""
 
-#: ../src/newmain.c:405
+#: ../src/newmain.c:404
 #, c-format
 msgid "You now WILL get beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:407
+#: ../src/newmain.c:406
 #, c-format
 msgid "You are already getting beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:421
+#: ../src/newmain.c:420
 #, c-format
 msgid "You will no longer receive wizchat.\n"
 msgstr ""
 
-#: ../src/newmain.c:423
+#: ../src/newmain.c:422
 #, c-format
 msgid "You have already turned wizchat off.\n"
 msgstr ""
 
-#: ../src/newmain.c:430
+#: ../src/newmain.c:429
 #, c-format
 msgid "You will now receive wizchat messages.\n"
 msgstr ""
 
-#: ../src/newmain.c:432
+#: ../src/newmain.c:431
 #, c-format
 msgid "You already receive wizchat messages.\n"
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 #, fuzzy, c-format
 msgid "Forcing Subscription to folder %s "
 msgstr "Εγγραφή στο φάκελο %s.\n"
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 msgid "Off"
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 msgid "On"
 msgstr ""
 
-#: ../src/newmain.c:451
+#: ../src/newmain.c:450
 #, fuzzy, c-format
 msgid ""
 "Failed\n"
 "Unknown folder name %s\n"
 msgstr "Άγνωστο όνομα φακέλου.\n"
 
-#: ../src/newmain.c:455
+#: ../src/newmain.c:454
 #, fuzzy, c-format
 msgid ", Done.\n"
 msgstr "Έγινε.\r\n"
 
-#: ../src/newmain.c:469
+#: ../src/newmain.c:468
 #, c-format
 msgid "Wiz! Bang! - You're a wizard again.\n"
 msgstr ""
 
-#: ../src/newmain.c:471
+#: ../src/newmain.c:470
 #, c-format
 msgid "You are already a wizard.\n"
 msgstr ""
 
-#: ../src/newmain.c:479
+#: ../src/newmain.c:478
 #, c-format
 msgid "!gnaB !ziW - You feel rather normal.\n"
 msgstr ""
 
-#: ../src/newmain.c:481
+#: ../src/newmain.c:480
 #, c-format
 msgid "You are already rather normal.\n"
 msgstr ""
 
-#: ../src/newmain.c:510
+#: ../src/newmain.c:509
 #, c-format
 msgid "You have been sent to 'coventry' you are not allowed to talk to anyone..\n"
 msgstr ""
 
-#: ../src/newmain.c:556
+#: ../src/newmain.c:555
 #, c-format
 msgid "Sorry, message is %d character%s too long (would be truncated to: '%s'). Try again.\n"
 msgstr ""
 
-#: ../src/newmain.c:568
+#: ../src/newmain.c:567
 #, fuzzy, c-format
 msgid "You are marked as doing nothing.\n"
 msgstr "Δεν επιτρέπεται η εγγραφή στο φάκελο αυτό.\n"
 
-#: ../src/newmain.c:578
+#: ../src/newmain.c:577
 #, fuzzy, c-format
 msgid "Current folder = %s\n"
 msgstr "Τρέχων όνομα φακέλου = %s\n"
 
-#: ../src/newmain.c:580
+#: ../src/newmain.c:579
 #, fuzzy, c-format
 msgid "You haven't read any messages in this folder yet.\n"
 msgstr "Δεν επιτρέπεται η εγγραφή στο φάκελο αυτό.\n"
 
-#: ../src/newmain.c:582
+#: ../src/newmain.c:581
 #, fuzzy, c-format
 msgid "You last read message %d.\n"
 msgstr "Τελευταίο ανεγνωσμένο μήνυμα αριθμό %d\n"
 
-#: ../src/newmain.c:594
+#: ../src/newmain.c:593
 #, fuzzy, c-format
 msgid "You are not permitted to read this folder.\n"
 msgstr "Δεν επιτρέπεται η εγγραφή στο φάκελο αυτό.\n"
 
-#: ../src/newmain.c:604
+#: ../src/newmain.c:685
 #, fuzzy, c-format
 msgid "WARNING: This command should not be run whilst people are using\n"
 msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η εντολή μπορεί να είναι πολύ επικίνδυνη !\n"
 
-#: ../src/newmain.c:605
+#: ../src/newmain.c:686
 #, c-format
 msgid "         the bulletin board, please exercise caution.\n"
 msgstr ""
 
-#: ../src/newmain.c:621
+#: ../src/newmain.c:822
 #, fuzzy, c-format
 msgid "Could not lockboard.\n"
 msgstr "Ο φάκελος δεν βρέθηκε.\n"
 
-#: ../src/newmain.c:625
+#: ../src/newmain.c:826
 #, c-format
 msgid "Board now locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:630
+#: ../src/newmain.c:831
 #, c-format
 msgid "Already Locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:637
+#: ../src/newmain.c:838
 #, c-format
 msgid "Board now unlocked.\n"
 msgstr ""
 
-#: ../src/newmain.c:640
+#: ../src/newmain.c:841
 #, fuzzy, c-format
 msgid "Board not locked.\n"
 msgstr "Ο φάκελος δεν βρέθηκε.\n"
 
-#: ../src/newmain.c:642
+#: ../src/newmain.c:843
 #, c-format
 msgid "Do you want to lock or unlock it.\n"
 msgstr ""
 
-#: ../src/newmain.c:671
+#: ../src/newmain.c:872
 msgid "Enter old password: "
 msgstr ""
 
-#: ../src/newmain.c:672
+#: ../src/newmain.c:873
 #, c-format
 msgid "Incorrect.\n"
 msgstr ""
 
-#: ../src/newmain.c:676
+#: ../src/newmain.c:877
 #, fuzzy
 msgid "New password: "
 msgstr "Νέο συνθηματικό: "
 
-#: ../src/newmain.c:679
+#: ../src/newmain.c:880
 #, c-format
 msgid "Did not match.\n"
 msgstr ""
 
-#: ../src/newmain.c:684
+#: ../src/newmain.c:885
 #, fuzzy, c-format
 msgid "Password set.\n"
 msgstr "Το συνθηματικό άλλαξε.\n"
 
-#: ../src/newmain.c:693
+#: ../src/newmain.c:894
 #, c-format
 msgid "You are already subscribed to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:697
+#: ../src/newmain.c:898
 #, c-format
 msgid "Resubscribing to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:704
+#: ../src/newmain.c:905
 #, c-format
 msgid "Already Unsubscribed from %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:721
+#: ../src/newmain.c:922
 #, c-format
 msgid "You are already at the beginning of the folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:727
+#: ../src/newmain.c:928
 #, fuzzy, c-format
 msgid "You are already at the end of this folder.\n"
 msgstr "Δεν επιτρέπεται η εγγραφή στο φάκελο αυτό.\n"
 
-#: ../src/newmain.c:739
+#: ../src/newmain.c:940
 #, fuzzy, c-format
 msgid "Current Status of %s\n"
 msgstr "Η τρέχουσα κατάσταση ορίζεται σε [%s]\n"
 
-#: ../src/newmain.c:740
+#: ../src/newmain.c:941
 #, fuzzy, c-format
 msgid "Your real name is %s\n"
 msgstr "Τρέχων όνομα φακέλου = %s\n"
 
-#: ../src/newmain.c:741
+#: ../src/newmain.c:942
 #, fuzzy, c-format
 msgid "Your contact address is %s\n"
 msgstr "Διεύθυνση επικοινωνίας: %s\n"
 
-#: ../src/newmain.c:742
+#: ../src/newmain.c:943
 #, fuzzy, c-format
 msgid "Your current status is [%s]\n"
 msgstr "Η τρέχουσα κατάσταση ορίζεται σε [%s]\n"
 
-#: ../src/newmain.c:743
+#: ../src/newmain.c:944
 #, fuzzy, c-format
 msgid "Special settings are [%s]\n"
 msgstr "Τα ειδικά ορίστηκαν σε [%s].\n"
 
-#: ../src/newmain.c:754
+#: ../src/newmain.c:955
 #, fuzzy, c-format
 msgid "Talker modes=[%s] privs=[%s] protection=[%s]\n"
 msgstr "Ομιλητής: Καταστάσεις=[%s]  Ιδιαίτερα=[%s]  Προστασία=[%s]\n"
 
-#: ../src/newmain.c:760
+#: ../src/newmain.c:961
 #, fuzzy, c-format
 msgid "Talker modes=[%s] privs=[%s]\n"
 msgstr "Ομιλητής: Καταστάσεις=[%s]  Ιδιαίτερα=[%s]  Προστασία=[%s]\n"
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 #, fuzzy, c-format
 msgid "You have set messages %s.\n"
 msgstr "05*** Έχετε %d νέα μηνύματα.\n"
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 msgid "off"
 msgstr ""
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 msgid "on"
 msgstr ""
 
-#: ../src/newmain.c:763
+#: ../src/newmain.c:964
 #, c-format
 msgid "You %s be informed of logins and logouts\n"
 msgstr ""
 
-#: ../src/newmain.c:763 ../src/newmain.c:764 ../src/newmain.c:774
+#: ../src/newmain.c:964 ../src/newmain.c:965 ../src/newmain.c:975
 msgid "will not"
 msgstr ""
 
-#: ../src/newmain.c:763 ../src/newmain.c:764 ../src/newmain.c:774
+#: ../src/newmain.c:964 ../src/newmain.c:965 ../src/newmain.c:975
 msgid "will"
 msgstr ""
 
-#: ../src/newmain.c:764
+#: ../src/newmain.c:965
 #, c-format
 msgid "You %s hear beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:767
+#: ../src/newmain.c:968
 #, c-format
 msgid "You can use wizchat"
 msgstr ""
 
-#: ../src/newmain.c:769
+#: ../src/newmain.c:970
 #, c-format
 msgid ", but you will not hear any replies"
 msgstr ""
 
-#: ../src/newmain.c:773
+#: ../src/newmain.c:974
 #, c-format
 msgid "You %s informed of user status changes.\n"
 msgstr ""
 
-#: ../src/newmain.c:775
+#: ../src/newmain.c:976
 #, fuzzy, c-format
 msgid "You belong to the following group(s) [%s]\n"
 msgstr "    (στην ομάδα) [%s]\n"
 
-#: ../src/newmain.c:776
+#: ../src/newmain.c:977
 #, c-format
 msgid "You are currently in folder %s, which you "
 msgstr ""
 
-#: ../src/newmain.c:777
+#: ../src/newmain.c:978
 #, c-format
 msgid "are"
 msgstr ""
 
-#: ../src/newmain.c:777
+#: ../src/newmain.c:978
 #, c-format
 msgid "are not"
 msgstr ""
 
-#: ../src/newmain.c:778
+#: ../src/newmain.c:979
 #, c-format
 msgid " subscribed to.\n"
 msgstr ""
 
-#: ../src/newmain.c:780
+#: ../src/newmain.c:981
 #, c-format
 msgid "You will not be timed out for being idle.\n"
 msgstr ""
 
-#: ../src/newmain.c:782
+#: ../src/newmain.c:983
 #, c-format
 msgid "You will be timed out after being idle for %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:819
+#: ../src/newmain.c:1020
 #, c-format
 msgid "You have to read a message before you can reply to it.\n"
 msgstr ""
 
-#: ../src/newmain.c:822
+#: ../src/newmain.c:1023
 #, fuzzy, c-format
 msgid "Replying to message %d.\n"
 msgstr "Απάντηση στο μήνυμα %d στο φάκελο %s\n"
 
-#: ../src/newmain.c:836
+#: ../src/newmain.c:1037
 #, fuzzy, c-format
 msgid "No folders found.\n"
 msgstr "Ο φάκελος δεν βρέθηκε.\n"
 
-#: ../src/newmain.c:841
+#: ../src/newmain.c:1042
 #, fuzzy, c-format
 msgid "Marking ALL folders as read.\n"
 msgstr "Εγγραφή στο φάκελο %s.\n"
 
-#: ../src/newmain.c:861
+#: ../src/newmain.c:1062
 #, fuzzy, c-format
 msgid "There is no folder '%s'\n"
 msgstr "Δεν υπάρχει μήνυμα %d\n"
 
-#: ../src/newmain.c:867
+#: ../src/newmain.c:1068
 #, fuzzy, c-format
 msgid "There is no folder %s\n"
 msgstr "Δεν υπάρχει μήνυμα %d\n"
 
-#: ../src/newmain.c:878
+#: ../src/newmain.c:1079
 #, fuzzy, c-format
 msgid "Marking folder %s as read.\n"
 msgstr "Εγγραφή στο φάκελο %s.\n"
 
-#: ../src/newmain.c:886
+#: ../src/newmain.c:1087
 #, fuzzy, c-format
 msgid "Current time and date is %s"
 msgstr "Τρέχων όνομα φακέλου = %s\n"
 
-#: ../src/newmain.c:954 ../src/newmain.c:978
+#: ../src/newmain.c:1155 ../src/newmain.c:1179
 #, fuzzy, c-format
 msgid "TIMEOUT must be at least 10 minutes.\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ πρέπει να είνα ιμεταξύ 10 λεπτά (600), και 3 'ώρες (10800), or 0 to disable.\n"
 
-#: ../src/newmain.c:970
+#: ../src/newmain.c:1171
 #, c-format
 msgid "Invalid time unit '%c' must be one of: dhms.\n"
 msgstr ""
 
-#: ../src/newmain.c:984
+#: ../src/newmain.c:1185
 #, fuzzy, c-format
 msgid "TIMEOUT now set to %s\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ απενεργοποιήθηκε.\n"
 
-#: ../src/newmain.c:986
+#: ../src/newmain.c:1187
 #, fuzzy, c-format
 msgid "TIMEOUT was already set to %s.\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ έχει ήδη απενεργοποιηθεί.\n"
 
-#: ../src/newmain.c:1001
+#: ../src/newmain.c:1202
 #, fuzzy, c-format
 msgid "Timestamps now disabled.\n"
 msgstr "Το τέλος χρόνου είναι απενεργοποιημένο.\n"
 
-#: ../src/newmain.c:1003
+#: ../src/newmain.c:1204
 #, c-format
 msgid "Timestamping was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1010
+#: ../src/newmain.c:1211
 #, fuzzy, c-format
 msgid "Timestamps now enabled.\n"
 msgstr "Το τέλος χρόνου είναι απενεργοποιημένο.\n"
 
-#: ../src/newmain.c:1012
+#: ../src/newmain.c:1213
 #, fuzzy, c-format
 msgid "Timestamping already enabled.\n"
 msgstr "Το ΤΕΛΟΣ ΧΡΟΝΟΥ έχει ήδη απενεργοποιηθεί.\n"
 
-#: ../src/newmain.c:1026
+#: ../src/newmain.c:1227
 #, c-format
 msgid "Posting information now suppressed.\n"
 msgstr ""
 
-#: ../src/newmain.c:1028
+#: ../src/newmain.c:1229
 #, c-format
 msgid "Posting info was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1035
+#: ../src/newmain.c:1236
 #, c-format
 msgid "You will now be informed of new postings.\n"
 msgstr ""
 
-#: ../src/newmain.c:1037
+#: ../src/newmain.c:1238
 #, c-format
 msgid "Posting info was already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:1051
+#: ../src/newmain.c:1252
 #, c-format
 msgid "User change information now suppressed.\n"
 msgstr ""
 
-#: ../src/newmain.c:1053
+#: ../src/newmain.c:1254
 #, c-format
 msgid "Change info was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1060
+#: ../src/newmain.c:1261
 #, c-format
 msgid "You will now be informed of user status changes.\n"
 msgstr ""
 
-#: ../src/newmain.c:1062
+#: ../src/newmain.c:1263
 #, c-format
 msgid "Change info was already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:1073
+#: ../src/newmain.c:1274
 #, c-format
 msgid "Already in chat mode, silly.\n"
 msgstr ""
 
-#: ../src/newmain.c:1089
+#: ../src/newmain.c:1290
 #, c-format
 msgid "You are not allowed to change your contact address. Please notify a SuperUser to change this for you.\n"
 msgstr ""
 
-#: ../src/newmain.c:1096
+#: ../src/newmain.c:1297
 #, c-format
 msgid "Alias '%s' already exists. Has now been redefined!\n"
 msgstr ""
 
-#: ../src/newmain.c:1098
+#: ../src/newmain.c:1299
 #, c-format
 msgid "Alias '%s' added!\n"
 msgstr ""
 
-#: ../src/newmain.c:1106
+#: ../src/newmain.c:1307
 #, c-format
 msgid "All Aliases Destroyed!\n"
 msgstr ""
 
-#: ../src/newmain.c:1111
+#: ../src/newmain.c:1312
 #, fuzzy, c-format
 msgid "Alias '%s' was not found!\n"
 msgstr "Ο%s: Χρήστης %s δεν βρέθηκε.\n"
 
-#: ../src/newmain.c:1113
+#: ../src/newmain.c:1314
 #, c-format
 msgid "Alias '%s' was destroyed...\n"
 msgstr ""
 
-#: ../src/talker.c:449 ../src/talker.c:451
+#: ../src/talker.c:441 ../src/talker.c:443
 #, fuzzy, c-format
 msgid "Current mwrc path: %s\n"
 msgstr "Τρέχων όνομα φακέλου = %s\n"
 
-#: ../src/talker.c:449
+#: ../src/talker.c:441
 msgid "<unset>"
 msgstr ""
 
-#: ../src/talker.c:457
+#: ../src/talker.c:449
 #, c-format
 msgid "Setting mwrc path to: %s\n"
 msgstr ""
 
-#: ../src/talker.c:536
+#: ../src/talker.c:561
 #, fuzzy, c-format
 msgid "User '%s' is not logged on.\n"
 msgstr "Το όνομα χρήστη %s δε βρέθηκε.\n"

Modified: trunk/po/mw.pot
===================================================================
--- trunk/po/mw.pot	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/po/mw.pot	2012-11-18 02:31:42 UTC (rev 1290)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: mw-devel at lists.sucs.org\n"
-"POT-Creation-Date: 2012-11-17 19:52+0000\n"
+"POT-Creation-Date: 2012-11-18 02:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -67,7 +67,7 @@
 msgid "Message must be addressed to an existing user.\n"
 msgstr ""
 
-#: ../src/add.c:204 ../src/add.c:211 ../src/edit.c:916
+#: ../src/add.c:204 ../src/add.c:211 ../src/edit.c:918
 #, c-format
 msgid "Subject: "
 msgstr ""
@@ -116,7 +116,7 @@
 msgid "edit"
 msgstr ""
 
-#: ../src/add.c:307 ../src/edit.c:832
+#: ../src/add.c:307 ../src/edit.c:834
 #, c-format
 msgid "Failed to set user id, aborting.\n"
 msgstr ""
@@ -126,7 +126,7 @@
 msgid "Cannot create temporary file: %s\n"
 msgstr ""
 
-#: ../src/add.c:350 ../src/edit.c:865
+#: ../src/add.c:350 ../src/edit.c:867
 #, c-format
 msgid "ERROR: Could not spawn editor: %s\n"
 msgstr ""
@@ -150,464 +150,464 @@
 msgid "Warning: incomplete folder record written; folder file may be corrupt.\n"
 msgstr ""
 
-#: ../src/alias.c:127 ../src/alias.c:137 ../src/alias.c:151 ../src/main.c:1021
+#: ../src/alias.c:127 ../src/alias.c:137 ../src/alias.c:151 ../src/main.c:1022
 #: ../src/user.c:415 ../src/user.c:452 ../src/user.c:518
 #, c-format
 msgid "---more---\r"
 msgstr ""
 
-#: ../src/edit.c:148
+#: ../src/edit.c:150
 #, c-format
 msgid "Username %s not found.\n"
 msgstr ""
 
-#: ../src/edit.c:162
+#: ../src/edit.c:164
 #, c-format
 msgid "Current status set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:165
+#: ../src/edit.c:167
 #, c-format
 msgid "New status [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:174
+#: ../src/edit.c:176
 #, c-format
 msgid "Do you really want to delete this user ? "
 msgstr ""
 
-#: ../src/edit.c:183
+#: ../src/edit.c:185
 #, c-format
 msgid "Status set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:197
+#: ../src/edit.c:199
 #, c-format
 msgid "Current specials set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:200
+#: ../src/edit.c:202
 #, c-format
 msgid "New specials [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:206
+#: ../src/edit.c:208
 #, c-format
 msgid "Specials set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:219
+#: ../src/edit.c:221
 #, c-format
 msgid "Current chatprivs set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:220
+#: ../src/edit.c:222
 #, c-format
 msgid "New chatprivs [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:225
+#: ../src/edit.c:227
 #, c-format
 msgid "Chatprivs set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:243
+#: ../src/edit.c:245
 #, c-format
 msgid "Current protection set to %s\n"
 msgstr ""
 
-#: ../src/edit.c:244
+#: ../src/edit.c:246
 #, c-format
 msgid "New levels [0-4]/[0-4]: "
 msgstr ""
 
-#: ../src/edit.c:255
+#: ../src/edit.c:257
 #, c-format
 msgid "Protection set to %d/%d.\n"
 msgstr ""
 
-#: ../src/edit.c:265
+#: ../src/edit.c:267
 #, c-format
 msgid "Invalid protection level.\n"
 msgstr ""
 
-#: ../src/edit.c:275
+#: ../src/edit.c:277
 #, c-format
 msgid "Current chatmode set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:276
+#: ../src/edit.c:278
 #, c-format
 msgid "New chatmode [+-=][%s]: "
 msgstr ""
 
-#: ../src/edit.c:281
+#: ../src/edit.c:283
 #, c-format
 msgid "Chatmode set to [%s].\n"
 msgstr ""
 
-#: ../src/edit.c:298
+#: ../src/edit.c:300
 #, c-format
 msgid "User currently in groups [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:299
+#: ../src/edit.c:301
 #, c-format
 msgid "New Groups [+-=][12345678]: "
 msgstr ""
 
-#: ../src/edit.c:309 ../src/edit.c:675
+#: ../src/edit.c:311 ../src/edit.c:677
 #, c-format
 msgid "Groups changed to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:318
+#: ../src/edit.c:320
 msgid "New Passwd: "
 msgstr ""
 
-#: ../src/edit.c:319 ../src/newmain.c:677
+#: ../src/edit.c:321 ../src/newmain.c:878
 msgid "Again: "
 msgstr ""
 
-#: ../src/edit.c:322
+#: ../src/edit.c:324
 #, c-format
 msgid ""
 "Passwords did not match.\n"
 "Not done.\n"
 msgstr ""
 
-#: ../src/edit.c:327
+#: ../src/edit.c:329
 #, c-format
 msgid "Password changed.\n"
 msgstr ""
 
-#: ../src/edit.c:339
+#: ../src/edit.c:341
 #, c-format
 msgid "Real Name: %s\n"
 msgstr ""
 
-#: ../src/edit.c:340
+#: ../src/edit.c:342
 #, c-format
 msgid "Enter new name (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:346 ../src/edit.c:421
+#: ../src/edit.c:348 ../src/edit.c:423
 #, c-format
 msgid "New name set.\n"
 msgstr ""
 
-#: ../src/edit.c:360
+#: ../src/edit.c:362
 #, c-format
 msgid "User currently in room [%d]\n"
 msgstr ""
 
-#: ../src/edit.c:361
+#: ../src/edit.c:363
 #, c-format
 msgid "New Room: [0-65535]: "
 msgstr ""
 
-#: ../src/edit.c:367 ../src/edit.c:373
+#: ../src/edit.c:369 ../src/edit.c:375
 #, c-format
 msgid "Invalid Room ID (0-65535 only)\n"
 msgstr ""
 
-#: ../src/edit.c:379
+#: ../src/edit.c:381
 #, c-format
 msgid "Room changed to %d.\n"
 msgstr ""
 
-#: ../src/edit.c:389
+#: ../src/edit.c:391
 #, c-format
 msgid "WARNING: This command can be very dangerous !\n"
 msgstr ""
 
-#: ../src/edit.c:390
+#: ../src/edit.c:392
 #, c-format
 msgid "User Name: %s\n"
 msgstr ""
 
-#: ../src/edit.c:391
+#: ../src/edit.c:393
 #, c-format
 msgid "Enter new username (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:408
+#: ../src/edit.c:410
 #, c-format
 msgid "You cannot change a username to one that already exists.\n"
 msgstr ""
 
-#: ../src/edit.c:411
+#: ../src/edit.c:413
 #, c-format
 msgid "Attempting to update existing user.\n"
 msgstr ""
 
-#: ../src/edit.c:414
+#: ../src/edit.c:416
 #, c-format
 msgid "Are you sure you want to change user '%s' into user '%s' ? "
 msgstr ""
 
-#: ../src/edit.c:425 ../src/edit.c:427
+#: ../src/edit.c:427 ../src/edit.c:429
 #, c-format
 msgid "Change Cancelled.\n"
 msgstr ""
 
-#: ../src/edit.c:432 ../src/edit.c:986
+#: ../src/edit.c:434 ../src/edit.c:988
 #, c-format
 msgid "Contact address: %s\n"
 msgstr ""
 
-#: ../src/edit.c:433 ../src/edit.c:987
+#: ../src/edit.c:435 ../src/edit.c:989
 #, c-format
 msgid "New address (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:439 ../src/edit.c:992
+#: ../src/edit.c:441 ../src/edit.c:994
 #, c-format
 msgid "New address set.\n"
 msgstr ""
 
-#: ../src/edit.c:447
+#: ../src/edit.c:449
 #, c-format
 msgid "Current Status: %s\n"
 msgstr ""
 
-#: ../src/edit.c:448
+#: ../src/edit.c:450
 #, c-format
 msgid "New Status (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:455 ../src/edit.c:462
+#: ../src/edit.c:457 ../src/edit.c:464
 #, c-format
 msgid "New status set.\n"
 msgstr ""
 
-#: ../src/edit.c:472
+#: ../src/edit.c:474
 #, c-format
 msgid "Timeout: %ld sec.\n"
 msgstr ""
 
-#: ../src/edit.c:473
+#: ../src/edit.c:475
 #, c-format
 msgid "New timeout value: "
 msgstr ""
 
-#: ../src/edit.c:494
+#: ../src/edit.c:496
 #, c-format
 msgid "TIMEOUT now disabled.\n"
 msgstr ""
 
-#: ../src/edit.c:500
+#: ../src/edit.c:502
 #, c-format
 msgid "TIMEOUT was already disabled.\n"
 msgstr ""
 
-#: ../src/edit.c:505
+#: ../src/edit.c:507
 #, c-format
 msgid "TIMEOUT must be be at least 10 minutes (600), or 0 to disable.\n"
 msgstr ""
 
-#: ../src/edit.c:513
+#: ../src/edit.c:515
 #, c-format
-msgid "New timeout set to %ld seconds.\n"
+msgid "New timeout set to %<PRId32> seconds.\n"
 msgstr ""
 
-#: ../src/edit.c:522
+#: ../src/edit.c:524
 #, c-format
 msgid "Lastread in folder? "
 msgstr ""
 
-#: ../src/edit.c:527
+#: ../src/edit.c:529
 #, c-format
 msgid "Folder not found.\n"
 msgstr ""
 
-#: ../src/edit.c:530
+#: ../src/edit.c:532
 #, c-format
 msgid "Last read message number %d\n"
 msgstr ""
 
-#: ../src/edit.c:531
+#: ../src/edit.c:533
 #, c-format
 msgid "New lastread: "
 msgstr ""
 
-#: ../src/edit.c:537
+#: ../src/edit.c:539
 #, c-format
 msgid "Lastread changed to %d\n"
 msgstr ""
 
-#: ../src/edit.c:541
+#: ../src/edit.c:543
 #, c-format
 msgid "Not changed.\n"
 msgstr ""
 
-#: ../src/edit.c:551
+#: ../src/edit.c:553
 #, c-format
 msgid ""
 "Username: %s\n"
 "Real Name: %s\n"
 msgstr ""
 
-#: ../src/edit.c:552
+#: ../src/edit.c:554
 #, c-format
 msgid ""
 "Contact: %s\n"
 "Status [%s]\tSpecials [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:555 ../src/edit.c:737
+#: ../src/edit.c:557 ../src/edit.c:739
 #, c-format
 msgid "Groups [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:558
+#: ../src/edit.c:560
 #, c-format
 msgid "Talker: Modes=[%s]  Privs=[%s]  Protection=[%s]\n"
 msgstr ""
 
-#: ../src/edit.c:564
+#: ../src/edit.c:566
 #, c-format
 msgid "Timeout disabled.\n"
 msgstr ""
 
-#: ../src/edit.c:566
+#: ../src/edit.c:568
 #, c-format
 msgid "Timeout set to %s.\n"
 msgstr ""
 
-#: ../src/edit.c:568
+#: ../src/edit.c:570
 #, c-format
 msgid "Last Login: %s"
 msgstr ""
 
-#: ../src/edit.c:571
+#: ../src/edit.c:573
 #, c-format
 msgid "Status: %s (%s ago)\n"
 msgstr ""
 
-#: ../src/edit.c:577
+#: ../src/edit.c:579
 #, c-format
 msgid "Are you sure you want to clear %s's ignore list? "
 msgstr ""
 
-#: ../src/edit.c:583
+#: ../src/edit.c:585
 #, c-format
 msgid "Ignorelist Cleared.\n"
 msgstr ""
 
-#: ../src/edit.c:587
+#: ../src/edit.c:589
 #, c-format
 msgid "Clear Cancelled.\n"
 msgstr ""
 
-#: ../src/edit.c:590
+#: ../src/edit.c:592
 #, c-format
 msgid "Unknown Command\n"
 msgstr ""
 
-#: ../src/edit.c:628
+#: ../src/edit.c:630
 #, c-format
 msgid "Unknown folder name.\n"
 msgstr ""
 
-#: ../src/edit.c:635
+#: ../src/edit.c:637
 #, c-format
 msgid ""
 "Folder %s\n"
 "Current status:-\n"
 msgstr ""
 
-#: ../src/edit.c:636
+#: ../src/edit.c:638
 #, c-format
 msgid "User not in group [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:638
+#: ../src/edit.c:640
 #, c-format
 msgid "User in group [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:639
+#: ../src/edit.c:641
 #, c-format
 msgid "Change to :-\n"
 msgstr ""
 
-#: ../src/edit.c:640
+#: ../src/edit.c:642
 #, c-format
 msgid "User not in group [+-=][arwRWpm]: "
 msgstr ""
 
-#: ../src/edit.c:647 ../src/edit.c:658
+#: ../src/edit.c:649 ../src/edit.c:660
 #, c-format
 msgid "Status changed to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:649 ../src/edit.c:660
+#: ../src/edit.c:651 ../src/edit.c:662
 #, c-format
 msgid "WARNING: folder may get written over by the next folder created.\n"
 msgstr ""
 
-#: ../src/edit.c:651
+#: ../src/edit.c:653
 #, c-format
 msgid "User in group [+-=][arwRWpm]: "
 msgstr ""
 
-#: ../src/edit.c:667
+#: ../src/edit.c:669
 #, c-format
 msgid "Folder %s is currently in groups [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:668
+#: ../src/edit.c:670
 #, c-format
 msgid "Folder groups [+-=][12345678]: "
 msgstr ""
 
-#: ../src/edit.c:680
+#: ../src/edit.c:682
 #, c-format
 msgid "Current folder name = %s\n"
 msgstr ""
 
-#: ../src/edit.c:681
+#: ../src/edit.c:683
 #, c-format
 msgid "Change to ? (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:705
+#: ../src/edit.c:707
 #, c-format
 msgid "Name changed to %s\n"
 msgstr ""
 
-#: ../src/edit.c:710
+#: ../src/edit.c:712
 #, c-format
 msgid "First Message in folder is %d\n"
 msgstr ""
 
-#: ../src/edit.c:711
+#: ../src/edit.c:713
 #, c-format
 msgid "New first message: "
 msgstr ""
 
-#: ../src/edit.c:716
+#: ../src/edit.c:718
 #, c-format
 msgid "First message set to %d\n"
 msgstr ""
 
-#: ../src/edit.c:718
+#: ../src/edit.c:720
 #, c-format
 msgid "Last Message in folder is %d\n"
 msgstr ""
 
-#: ../src/edit.c:719
+#: ../src/edit.c:721
 #, c-format
 msgid "New Last message: "
 msgstr ""
 
-#: ../src/edit.c:724
+#: ../src/edit.c:726
 #, c-format
 msgid "Last message set to %d\n"
 msgstr ""
 
-#: ../src/edit.c:731
+#: ../src/edit.c:733
 #, c-format
 msgid ""
 "\n"
@@ -616,132 +616,132 @@
 "Message range %d to %d\n"
 msgstr ""
 
-#: ../src/edit.c:733
+#: ../src/edit.c:735
 #, c-format
 msgid "Status (out of group) [%s]"
 msgstr ""
 
-#: ../src/edit.c:735
+#: ../src/edit.c:737
 #, c-format
 msgid "    (in group) [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:742
+#: ../src/edit.c:744
 #, c-format
 msgid "Current folder topic = '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:743
+#: ../src/edit.c:745
 #, c-format
 msgid "New topic (%d chars): "
 msgstr ""
 
-#: ../src/edit.c:748
+#: ../src/edit.c:750
 #, c-format
 msgid "Topic changed to '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:754
+#: ../src/edit.c:756
 #, c-format
 msgid "Do you really want to delete folder %s  ?(yes/no) "
 msgstr ""
 
-#: ../src/edit.c:773
+#: ../src/edit.c:775
 #, c-format
 msgid "Folder Deleted.\n"
 msgstr ""
 
-#: ../src/edit.c:777 ../src/edit.c:910 ../src/edit.c:923
+#: ../src/edit.c:779 ../src/edit.c:912 ../src/edit.c:925
 #, c-format
 msgid "Not Done.\n"
 msgstr ""
 
-#: ../src/edit.c:809
+#: ../src/edit.c:811
 #, c-format
 msgid "Message %d not found.\n"
 msgstr ""
 
-#: ../src/edit.c:818
+#: ../src/edit.c:820
 #, c-format
 msgid "You cannot edit other peoples messages.\n"
 msgstr ""
 
-#: ../src/edit.c:902
+#: ../src/edit.c:904
 #, c-format
 msgid "Currently to '%s'.\n"
 msgstr ""
 
-#: ../src/edit.c:903
+#: ../src/edit.c:905
 #, c-format
 msgid "to: "
 msgstr ""
 
-#: ../src/edit.c:907
+#: ../src/edit.c:909
 #, c-format
 msgid "Message now to '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:915
+#: ../src/edit.c:917
 #, c-format
 msgid "Current subject is '%s'.\n"
 msgstr ""
 
-#: ../src/edit.c:920
+#: ../src/edit.c:922
 #, c-format
 msgid "Subject '%s'\n"
 msgstr ""
 
-#: ../src/edit.c:928
+#: ../src/edit.c:930
 #, c-format
 msgid "Message Marked for deletion.\n"
 msgstr ""
 
-#: ../src/edit.c:933
+#: ../src/edit.c:935
 #, c-format
 msgid "Message has been undeleted.\n"
 msgstr ""
 
-#: ../src/edit.c:939
+#: ../src/edit.c:941
 #, c-format
 msgid "Status mode is currently %s\n"
 msgstr ""
 
-#: ../src/edit.c:941
+#: ../src/edit.c:943
 #, c-format
 msgid "New status [%s]: "
 msgstr ""
 
-#: ../src/edit.c:947 ../src/user.c:270
+#: ../src/edit.c:949 ../src/user.c:270
 #, c-format
 msgid "Status set to [%s]\n"
 msgstr ""
 
-#: ../src/edit.c:951
+#: ../src/edit.c:953
 #, c-format
 msgid "What do you want to do ?\n"
 msgstr ""
 
-#: ../src/edit.c:972
+#: ../src/edit.c:974
 #, c-format
 msgid "Total Login Time of "
 msgstr ""
 
-#: ../src/edit.c:974
+#: ../src/edit.c:976
 #, c-format
 msgid "%d day%s, "
 msgstr ""
 
-#: ../src/edit.c:976
+#: ../src/edit.c:978
 #, c-format
 msgid "%d hour%s, "
 msgstr ""
 
-#: ../src/edit.c:978
+#: ../src/edit.c:980
 #, c-format
 msgid "%d minute%s, "
 msgstr ""
 
-#: ../src/edit.c:979
+#: ../src/edit.c:981
 #, c-format
 msgid "%d second%s.\n"
 msgstr ""
@@ -869,126 +869,141 @@
 msgid "\"%s\033--\" says Zebedee\n"
 msgstr ""
 
-#: ../src/init.c:130
+#: ../src/init.c:97
 #, c-format
 msgid "Cannot load \"%s\": Illegal path\n"
 msgstr ""
 
-#: ../src/init.c:143
+#: ../src/init.c:110
 #, c-format
 msgid "Error reading %s: Not a regular file\n"
 msgstr ""
 
-#: ../src/init.c:150
+#: ../src/init.c:117
 #, c-format
 msgid "Error reading %s: %s\n"
 msgstr ""
 
-#: ../src/init.c:181 ../src/init.c:188
+#: ../src/init.c:148 ../src/init.c:155
 #, c-format
 msgid "Malformed alias in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:196
+#: ../src/init.c:163
 #, c-format
 msgid "Alias %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:204 ../src/init.c:211
+#: ../src/init.c:171 ../src/init.c:178
 #, c-format
 msgid "Malformed bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:219
+#: ../src/init.c:186
 #, c-format
 msgid "Bind %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:227 ../src/init.c:234
+#: ../src/init.c:194 ../src/init.c:201
 #, c-format
 msgid "Malformed rpc bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:242
+#: ../src/init.c:209
 #, c-format
 msgid "RPC Bind %s already exists. Redefined at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:250 ../src/init.c:269
+#: ../src/init.c:217 ../src/init.c:236
 #, c-format
 msgid "Malformed include in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:281
+#: ../src/init.c:248
 #, c-format
 msgid "Malformed event bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:289
+#: ../src/init.c:256
 #, c-format
 msgid "Event bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:297
+#: ../src/init.c:264
 #, c-format
 msgid "Malformed ipc in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:305
+#: ../src/init.c:272
 #, c-format
 msgid "IPC bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:313
+#: ../src/init.c:280
 #, c-format
 msgid "Malformed checkonoff bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:321
+#: ../src/init.c:288
 #, c-format
 msgid "Checkonoff bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:329
+#: ../src/init.c:296
 #, c-format
 msgid "Malformed shutdown bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:337
+#: ../src/init.c:304
 #, c-format
 msgid "Shutdown bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:345
+#: ../src/init.c:312
 #, c-format
 msgid "Malformed force bind in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:353
+#: ../src/init.c:320
 #, c-format
 msgid "Force bind already exists. Useless instruction at line %d in %s.\n"
 msgstr ""
 
-#: ../src/init.c:361 ../src/init.c:374
+#: ../src/init.c:328 ../src/init.c:341
 #, c-format
 msgid "Malformed Script Function declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:387 ../src/init.c:400
+#: ../src/init.c:354 ../src/init.c:367
 #, c-format
 msgid "Malformed Script Init declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:413 ../src/init.c:426
+#: ../src/init.c:380 ../src/init.c:393
 #, c-format
 msgid "Malformed Script BoardInit declaration in %s at line %d\n"
 msgstr ""
 
-#: ../src/init.c:434
+#: ../src/init.c:401
 #, c-format
 msgid "Loading file %s unrecognised command '%s' on line %d\n"
 msgstr ""
 
+#: ../src/init.c:427
+#, c-format
+msgid "Failed to get user data\n"
+msgstr ""
+
+#: ../src/init.c:432
+#, c-format
+msgid "Failed to read init file %s/%s\n"
+msgstr ""
+
+#: ../src/init.c:439
+#, c-format
+msgid "Could not find init file %s\n"
+msgstr ""
+
 #: ../src/main.c:253
 msgid "\03305*** You have new mail.\n"
 msgstr ""
@@ -1070,37 +1085,37 @@
 msgid "Username not permitted.\n"
 msgstr ""
 
-#: ../src/main.c:612 ../src/main.c:638
+#: ../src/main.c:613 ../src/main.c:639
 #, c-format
 msgid "%s: User %s not found.\n"
 msgstr ""
 
-#: ../src/main.c:631
+#: ../src/main.c:632
 #, c-format
 msgid "%s: Folder %s not found.\n"
 msgstr ""
 
-#: ../src/main.c:673
+#: ../src/main.c:674
 #, c-format
 msgid "The board is currently locked to normal users.\n"
 msgstr ""
 
-#: ../src/main.c:676
+#: ../src/main.c:677
 #, c-format
 msgid "The Board has been temporarily closed.\n"
 msgstr ""
 
-#: ../src/main.c:677
+#: ../src/main.c:678
 #, c-format
 msgid "Please call again soon.\n"
 msgstr ""
 
-#: ../src/main.c:694
+#: ../src/main.c:695
 #, c-format
 msgid "\03301%s has just entered the board."
 msgstr ""
 
-#: ../src/main.c:718
+#: ../src/main.c:719
 #, c-format
 msgid ""
 "\n"
@@ -1108,81 +1123,81 @@
 "\n"
 msgstr ""
 
-#: ../src/main.c:720
+#: ../src/main.c:721
 #, c-format
 msgid "Type 'talker' to enter chat mode.\n"
 msgstr ""
 
-#: ../src/main.c:725
+#: ../src/main.c:726
 #, c-format
 msgid "You must register before being able to use this system fully.\n"
 msgstr ""
 
-#: ../src/main.c:726
+#: ../src/main.c:727
 #, c-format
 msgid "Until then you will not be able to write in most folders or use chat mode.\n"
 msgstr ""
 
-#: ../src/main.c:727
+#: ../src/main.c:728
 #, c-format
 msgid "Wait here for a few minutes and an administrator might register you.\n"
 msgstr ""
 
-#: ../src/main.c:729
+#: ../src/main.c:730
 #, c-format
 msgid "Type 'help' for help.\n"
 msgstr ""
 
-#: ../src/main.c:1075
+#: ../src/main.c:1076
 #, c-format
 msgid ""
 "\n"
 "Error reading incoming message pipe. panic.\n"
 msgstr ""
 
-#: ../src/main.c:1079
+#: ../src/main.c:1080
 #, c-format
 msgid ""
 "\n"
 "Error on input terminal, argh.\n"
 msgstr ""
 
-#: ../src/main.c:1152
+#: ../src/main.c:1153
 #, c-format
 msgid "Error: Urk, no message to print.\n"
 msgstr ""
 
-#: ../src/main.c:1368
+#: ../src/main.c:1369
 #, c-format
 msgid "*** Timed Out, Good Bye\r\n"
 msgstr ""
 
-#: ../src/main.c:1372
+#: ../src/main.c:1373
 #, c-format
 msgid "\03304%s has been timed out."
 msgstr ""
 
-#: ../src/main.c:1379
+#: ../src/main.c:1380
 #, c-format
 msgid "%c*** Wakey ! Wakey !\r\n"
 msgstr ""
 
-#: ../src/main.c:2030
+#: ../src/main.c:2031
 #, c-format
 msgid "Release version %s.%s.%s\n"
 msgstr ""
 
-#: ../src/main.c:2032
+#: ../src/main.c:2033
 #, c-format
 msgid "Release version %s.%s\n"
 msgstr ""
 
-#: ../src/main.c:2034
+#: ../src/main.c:2035
 #, c-format
 msgid "Development version %s.%s.%s\n"
 msgstr ""
 
-#: ../src/main.c:2036
+#: ../src/main.c:2037
 #, c-format
 msgid "Built by %s on %s\n"
 msgstr ""
@@ -1330,7 +1345,7 @@
 msgid "Skipping this folder. %d messages left unread.\n"
 msgstr ""
 
-#: ../src/new.c:155 ../src/newmain.c:708
+#: ../src/new.c:155 ../src/newmain.c:909
 #, c-format
 msgid "Unsubscribing from %s.\n"
 msgstr ""
@@ -1355,635 +1370,635 @@
 msgid "            <empty>\n"
 msgstr ""
 
-#: ../src/newmain.c:77 ../src/newmain.c:116 ../src/newmain.c:140
+#: ../src/newmain.c:76 ../src/newmain.c:115 ../src/newmain.c:139
 #, c-format
 msgid "Sorry, no help available on that subject.\n"
 msgstr ""
 
-#: ../src/newmain.c:102
+#: ../src/newmain.c:101
 #, c-format
 msgid "No general help available for talker commands.\n"
 msgstr ""
 
-#: ../src/newmain.c:156 ../src/newmain.c:162
+#: ../src/newmain.c:155 ../src/newmain.c:161
 #, c-format
 msgid "Unknown foldername.\n"
 msgstr ""
 
-#: ../src/newmain.c:167
+#: ../src/newmain.c:166
 #, c-format
 msgid "Changing to folder %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:201 ../src/newmain.c:575
+#: ../src/newmain.c:200 ../src/newmain.c:574
 #, c-format
 msgid "No current folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:205
+#: ../src/newmain.c:204
 #, c-format
 msgid "Moved to end of folder. (message %d)\n"
 msgstr ""
 
-#: ../src/newmain.c:213
+#: ../src/newmain.c:212
 #, c-format
 msgid "Moved to start of folder. (message %d)\n"
 msgstr ""
 
-#: ../src/newmain.c:243
+#: ../src/newmain.c:242
 #, c-format
 msgid "Messages are now off.\n"
 msgstr ""
 
-#: ../src/newmain.c:245
+#: ../src/newmain.c:244
 #, c-format
 msgid "Messages are already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:252
+#: ../src/newmain.c:251
 #, c-format
 msgid "Messages are now on.\n"
 msgstr ""
 
-#: ../src/newmain.c:254
+#: ../src/newmain.c:253
 #, c-format
 msgid "Messages already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:268
+#: ../src/newmain.c:267
 #, c-format
 msgid "You will NOT be informed of logins/outs.\n"
 msgstr ""
 
-#: ../src/newmain.c:270
+#: ../src/newmain.c:269
 #, c-format
 msgid "You are already not informed of logins.\n"
 msgstr ""
 
-#: ../src/newmain.c:277
+#: ../src/newmain.c:276
 #, c-format
 msgid "You now WILL be informed of logins/outs\n"
 msgstr ""
 
-#: ../src/newmain.c:279
+#: ../src/newmain.c:278
 #, c-format
 msgid "You are already informed of logins/outs.\n"
 msgstr ""
 
-#: ../src/newmain.c:292
+#: ../src/newmain.c:291
 #, c-format
 msgid "Colours disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:294
+#: ../src/newmain.c:293
 #, c-format
 msgid "Colour enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:296
+#: ../src/newmain.c:295
 #, c-format
 msgid "No colour scheme loaded.\n"
 msgstr ""
 
-#: ../src/newmain.c:297
+#: ../src/newmain.c:296
 #, c-format
 msgid "Current colour scheme: %d: %s\n"
 msgstr ""
 
-#: ../src/newmain.c:310
+#: ../src/newmain.c:309
 #, c-format
 msgid "Error opening colour scheme list - %s\n"
 msgstr ""
 
-#: ../src/newmain.c:314
+#: ../src/newmain.c:313
 #, c-format
 msgid "Listing available colour schemes:-\n"
 msgstr ""
 
-#: ../src/newmain.c:342
+#: ../src/newmain.c:341
 #, c-format
 msgid "No colour schemes found.\n"
 msgstr ""
 
-#: ../src/newmain.c:356
+#: ../src/newmain.c:355
 #, c-format
 msgid "ERROR: Cannot open colour scheme '%d'\n"
 msgstr ""
 
-#: ../src/newmain.c:371
+#: ../src/newmain.c:370
 #, c-format
 msgid "Colour mode now disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:373
+#: ../src/newmain.c:372
 #, c-format
 msgid "Colour mode already disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:380
+#: ../src/newmain.c:379
 #, c-format
 msgid "Colour mode now enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:382
+#: ../src/newmain.c:381
 #, c-format
 msgid "Colour mode already enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:396
+#: ../src/newmain.c:395
 #, c-format
 msgid "You will NOT hear any beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:398
+#: ../src/newmain.c:397
 #, c-format
 msgid "You have already turned beeps off.\n"
 msgstr ""
 
-#: ../src/newmain.c:405
+#: ../src/newmain.c:404
 #, c-format
 msgid "You now WILL get beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:407
+#: ../src/newmain.c:406
 #, c-format
 msgid "You are already getting beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:421
+#: ../src/newmain.c:420
 #, c-format
 msgid "You will no longer receive wizchat.\n"
 msgstr ""
 
-#: ../src/newmain.c:423
+#: ../src/newmain.c:422
 #, c-format
 msgid "You have already turned wizchat off.\n"
 msgstr ""
 
-#: ../src/newmain.c:430
+#: ../src/newmain.c:429
 #, c-format
 msgid "You will now receive wizchat messages.\n"
 msgstr ""
 
-#: ../src/newmain.c:432
+#: ../src/newmain.c:431
 #, c-format
 msgid "You already receive wizchat messages.\n"
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 #, c-format
 msgid "Forcing Subscription to folder %s "
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 msgid "Off"
 msgstr ""
 
-#: ../src/newmain.c:448
+#: ../src/newmain.c:447
 msgid "On"
 msgstr ""
 
-#: ../src/newmain.c:451
+#: ../src/newmain.c:450
 #, c-format
 msgid ""
 "Failed\n"
 "Unknown folder name %s\n"
 msgstr ""
 
-#: ../src/newmain.c:455
+#: ../src/newmain.c:454
 #, c-format
 msgid ", Done.\n"
 msgstr ""
 
-#: ../src/newmain.c:469
+#: ../src/newmain.c:468
 #, c-format
 msgid "Wiz! Bang! - You're a wizard again.\n"
 msgstr ""
 
-#: ../src/newmain.c:471
+#: ../src/newmain.c:470
 #, c-format
 msgid "You are already a wizard.\n"
 msgstr ""
 
-#: ../src/newmain.c:479
+#: ../src/newmain.c:478
 #, c-format
 msgid "!gnaB !ziW - You feel rather normal.\n"
 msgstr ""
 
-#: ../src/newmain.c:481
+#: ../src/newmain.c:480
 #, c-format
 msgid "You are already rather normal.\n"
 msgstr ""
 
-#: ../src/newmain.c:510
+#: ../src/newmain.c:509
 #, c-format
 msgid "You have been sent to 'coventry' you are not allowed to talk to anyone..\n"
 msgstr ""
 
-#: ../src/newmain.c:556
+#: ../src/newmain.c:555
 #, c-format
 msgid "Sorry, message is %d character%s too long (would be truncated to: '%s'). Try again.\n"
 msgstr ""
 
-#: ../src/newmain.c:568
+#: ../src/newmain.c:567
 #, c-format
 msgid "You are marked as doing nothing.\n"
 msgstr ""
 
-#: ../src/newmain.c:578
+#: ../src/newmain.c:577
 #, c-format
 msgid "Current folder = %s\n"
 msgstr ""
 
-#: ../src/newmain.c:580
+#: ../src/newmain.c:579
 #, c-format
 msgid "You haven't read any messages in this folder yet.\n"
 msgstr ""
 
-#: ../src/newmain.c:582
+#: ../src/newmain.c:581
 #, c-format
 msgid "You last read message %d.\n"
 msgstr ""
 
-#: ../src/newmain.c:594
+#: ../src/newmain.c:593
 #, c-format
 msgid "You are not permitted to read this folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:604
+#: ../src/newmain.c:685
 #, c-format
 msgid "WARNING: This command should not be run whilst people are using\n"
 msgstr ""
 
-#: ../src/newmain.c:605
+#: ../src/newmain.c:686
 #, c-format
 msgid "         the bulletin board, please exercise caution.\n"
 msgstr ""
 
-#: ../src/newmain.c:621
+#: ../src/newmain.c:822
 #, c-format
 msgid "Could not lockboard.\n"
 msgstr ""
 
-#: ../src/newmain.c:625
+#: ../src/newmain.c:826
 #, c-format
 msgid "Board now locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:630
+#: ../src/newmain.c:831
 #, c-format
 msgid "Already Locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:637
+#: ../src/newmain.c:838
 #, c-format
 msgid "Board now unlocked.\n"
 msgstr ""
 
-#: ../src/newmain.c:640
+#: ../src/newmain.c:841
 #, c-format
 msgid "Board not locked.\n"
 msgstr ""
 
-#: ../src/newmain.c:642
+#: ../src/newmain.c:843
 #, c-format
 msgid "Do you want to lock or unlock it.\n"
 msgstr ""
 
-#: ../src/newmain.c:671
+#: ../src/newmain.c:872
 msgid "Enter old password: "
 msgstr ""
 
-#: ../src/newmain.c:672
+#: ../src/newmain.c:873
 #, c-format
 msgid "Incorrect.\n"
 msgstr ""
 
-#: ../src/newmain.c:676
+#: ../src/newmain.c:877
 msgid "New password: "
 msgstr ""
 
-#: ../src/newmain.c:679
+#: ../src/newmain.c:880
 #, c-format
 msgid "Did not match.\n"
 msgstr ""
 
-#: ../src/newmain.c:684
+#: ../src/newmain.c:885
 #, c-format
 msgid "Password set.\n"
 msgstr ""
 
-#: ../src/newmain.c:693
+#: ../src/newmain.c:894
 #, c-format
 msgid "You are already subscribed to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:697
+#: ../src/newmain.c:898
 #, c-format
 msgid "Resubscribing to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:704
+#: ../src/newmain.c:905
 #, c-format
 msgid "Already Unsubscribed from %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:721
+#: ../src/newmain.c:922
 #, c-format
 msgid "You are already at the beginning of the folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:727
+#: ../src/newmain.c:928
 #, c-format
 msgid "You are already at the end of this folder.\n"
 msgstr ""
 
-#: ../src/newmain.c:739
+#: ../src/newmain.c:940
 #, c-format
 msgid "Current Status of %s\n"
 msgstr ""
 
-#: ../src/newmain.c:740
+#: ../src/newmain.c:941
 #, c-format
 msgid "Your real name is %s\n"
 msgstr ""
 
-#: ../src/newmain.c:741
+#: ../src/newmain.c:942
 #, c-format
 msgid "Your contact address is %s\n"
 msgstr ""
 
-#: ../src/newmain.c:742
+#: ../src/newmain.c:943
 #, c-format
 msgid "Your current status is [%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:743
+#: ../src/newmain.c:944
 #, c-format
 msgid "Special settings are [%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:754
+#: ../src/newmain.c:955
 #, c-format
 msgid "Talker modes=[%s] privs=[%s] protection=[%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:760
+#: ../src/newmain.c:961
 #, c-format
 msgid "Talker modes=[%s] privs=[%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 #, c-format
 msgid "You have set messages %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 msgid "off"
 msgstr ""
 
-#: ../src/newmain.c:762
+#: ../src/newmain.c:963
 msgid "on"
 msgstr ""
 
-#: ../src/newmain.c:763
+#: ../src/newmain.c:964
 #, c-format
 msgid "You %s be informed of logins and logouts\n"
 msgstr ""
 
-#: ../src/newmain.c:763 ../src/newmain.c:764 ../src/newmain.c:774
+#: ../src/newmain.c:964 ../src/newmain.c:965 ../src/newmain.c:975
 msgid "will not"
 msgstr ""
 
-#: ../src/newmain.c:763 ../src/newmain.c:764 ../src/newmain.c:774
+#: ../src/newmain.c:964 ../src/newmain.c:965 ../src/newmain.c:975
 msgid "will"
 msgstr ""
 
-#: ../src/newmain.c:764
+#: ../src/newmain.c:965
 #, c-format
 msgid "You %s hear beeps.\n"
 msgstr ""
 
-#: ../src/newmain.c:767
+#: ../src/newmain.c:968
 #, c-format
 msgid "You can use wizchat"
 msgstr ""
 
-#: ../src/newmain.c:769
+#: ../src/newmain.c:970
 #, c-format
 msgid ", but you will not hear any replies"
 msgstr ""
 
-#: ../src/newmain.c:773
+#: ../src/newmain.c:974
 #, c-format
 msgid "You %s informed of user status changes.\n"
 msgstr ""
 
-#: ../src/newmain.c:775
+#: ../src/newmain.c:976
 #, c-format
 msgid "You belong to the following group(s) [%s]\n"
 msgstr ""
 
-#: ../src/newmain.c:776
+#: ../src/newmain.c:977
 #, c-format
 msgid "You are currently in folder %s, which you "
 msgstr ""
 
-#: ../src/newmain.c:777
+#: ../src/newmain.c:978
 #, c-format
 msgid "are"
 msgstr ""
 
-#: ../src/newmain.c:777
+#: ../src/newmain.c:978
 #, c-format
 msgid "are not"
 msgstr ""
 
-#: ../src/newmain.c:778
+#: ../src/newmain.c:979
 #, c-format
 msgid " subscribed to.\n"
 msgstr ""
 
-#: ../src/newmain.c:780
+#: ../src/newmain.c:981
 #, c-format
 msgid "You will not be timed out for being idle.\n"
 msgstr ""
 
-#: ../src/newmain.c:782
+#: ../src/newmain.c:983
 #, c-format
 msgid "You will be timed out after being idle for %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:819
+#: ../src/newmain.c:1020
 #, c-format
 msgid "You have to read a message before you can reply to it.\n"
 msgstr ""
 
-#: ../src/newmain.c:822
+#: ../src/newmain.c:1023
 #, c-format
 msgid "Replying to message %d.\n"
 msgstr ""
 
-#: ../src/newmain.c:836
+#: ../src/newmain.c:1037
 #, c-format
 msgid "No folders found.\n"
 msgstr ""
 
-#: ../src/newmain.c:841
+#: ../src/newmain.c:1042
 #, c-format
 msgid "Marking ALL folders as read.\n"
 msgstr ""
 
-#: ../src/newmain.c:861
+#: ../src/newmain.c:1062
 #, c-format
 msgid "There is no folder '%s'\n"
 msgstr ""
 
-#: ../src/newmain.c:867
+#: ../src/newmain.c:1068
 #, c-format
 msgid "There is no folder %s\n"
 msgstr ""
 
-#: ../src/newmain.c:878
+#: ../src/newmain.c:1079
 #, c-format
 msgid "Marking folder %s as read.\n"
 msgstr ""
 
-#: ../src/newmain.c:886
+#: ../src/newmain.c:1087
 #, c-format
 msgid "Current time and date is %s"
 msgstr ""
 
-#: ../src/newmain.c:954 ../src/newmain.c:978
+#: ../src/newmain.c:1155 ../src/newmain.c:1179
 #, c-format
 msgid "TIMEOUT must be at least 10 minutes.\n"
 msgstr ""
 
-#: ../src/newmain.c:970
+#: ../src/newmain.c:1171
 #, c-format
 msgid "Invalid time unit '%c' must be one of: dhms.\n"
 msgstr ""
 
-#: ../src/newmain.c:984
+#: ../src/newmain.c:1185
 #, c-format
 msgid "TIMEOUT now set to %s\n"
 msgstr ""
 
-#: ../src/newmain.c:986
+#: ../src/newmain.c:1187
 #, c-format
 msgid "TIMEOUT was already set to %s.\n"
 msgstr ""
 
-#: ../src/newmain.c:1001
+#: ../src/newmain.c:1202
 #, c-format
 msgid "Timestamps now disabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:1003
+#: ../src/newmain.c:1204
 #, c-format
 msgid "Timestamping was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1010
+#: ../src/newmain.c:1211
 #, c-format
 msgid "Timestamps now enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:1012
+#: ../src/newmain.c:1213
 #, c-format
 msgid "Timestamping already enabled.\n"
 msgstr ""
 
-#: ../src/newmain.c:1026
+#: ../src/newmain.c:1227
 #, c-format
 msgid "Posting information now suppressed.\n"
 msgstr ""
 
-#: ../src/newmain.c:1028
+#: ../src/newmain.c:1229
 #, c-format
 msgid "Posting info was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1035
+#: ../src/newmain.c:1236
 #, c-format
 msgid "You will now be informed of new postings.\n"
 msgstr ""
 
-#: ../src/newmain.c:1037
+#: ../src/newmain.c:1238
 #, c-format
 msgid "Posting info was already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:1051
+#: ../src/newmain.c:1252
 #, c-format
 msgid "User change information now suppressed.\n"
 msgstr ""
 
-#: ../src/newmain.c:1053
+#: ../src/newmain.c:1254
 #, c-format
 msgid "Change info was already off.\n"
 msgstr ""
 
-#: ../src/newmain.c:1060
+#: ../src/newmain.c:1261
 #, c-format
 msgid "You will now be informed of user status changes.\n"
 msgstr ""
 
-#: ../src/newmain.c:1062
+#: ../src/newmain.c:1263
 #, c-format
 msgid "Change info was already on.\n"
 msgstr ""
 
-#: ../src/newmain.c:1073
+#: ../src/newmain.c:1274
 #, c-format
 msgid "Already in chat mode, silly.\n"
 msgstr ""
 
-#: ../src/newmain.c:1089
+#: ../src/newmain.c:1290
 #, c-format
 msgid "You are not allowed to change your contact address. Please notify a SuperUser to change this for you.\n"
 msgstr ""
 
-#: ../src/newmain.c:1096
+#: ../src/newmain.c:1297
 #, c-format
 msgid "Alias '%s' already exists. Has now been redefined!\n"
 msgstr ""
 
-#: ../src/newmain.c:1098
+#: ../src/newmain.c:1299
 #, c-format
 msgid "Alias '%s' added!\n"
 msgstr ""
 
-#: ../src/newmain.c:1106
+#: ../src/newmain.c:1307
 #, c-format
 msgid "All Aliases Destroyed!\n"
 msgstr ""
 
-#: ../src/newmain.c:1111
+#: ../src/newmain.c:1312
 #, c-format
 msgid "Alias '%s' was not found!\n"
 msgstr ""
 
-#: ../src/newmain.c:1113
+#: ../src/newmain.c:1314
 #, c-format
 msgid "Alias '%s' was destroyed...\n"
 msgstr ""
 
-#: ../src/talker.c:449 ../src/talker.c:451
+#: ../src/talker.c:441 ../src/talker.c:443
 #, c-format
 msgid "Current mwrc path: %s\n"
 msgstr ""
 
-#: ../src/talker.c:449
+#: ../src/talker.c:441
 msgid "<unset>"
 msgstr ""
 
-#: ../src/talker.c:457
+#: ../src/talker.c:449
 #, c-format
 msgid "Setting mwrc path to: %s\n"
 msgstr ""
 
-#: ../src/talker.c:536
+#: ../src/talker.c:561
 #, c-format
 msgid "User '%s' is not logged on.\n"
 msgstr ""

Modified: trunk/src/Makefile
===================================================================
--- trunk/src/Makefile	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/Makefile	2012-11-18 02:31:42 UTC (rev 1290)
@@ -11,7 +11,7 @@
 CFLAGS+=-I/usr/include/mozjs
 
 # cflags for standard 'cc' compiler
-CFLAGS+= -Wall -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wno-strict-aliasing -pedantic -fpie -std=gnu99 -D_GNU_SOURCE
+CFLAGS+= -Wall -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wwrite-strings -Wno-strict-aliasing -pedantic -fpie -std=gnu99 -D_GNU_SOURCE
 LDFLAGS+= -pie
 LDLIBS+= -lreadline -ltermcap -lcrypt -l$(JSLIB) -lsqlite3 -lcurl -lpthread -lgnutls-openssl -ljansson
 
@@ -56,7 +56,7 @@
 mw: user.o main.o read.o add.o folders.o new.o perms.o edit.o mod.o who.o\
 echo.o getpass.o mesg.o strings.o special.o Parse.o\
 newmain.o init.o talker.o talker_privs.o colour.o bork.o rooms.o alarm.o\
-topten.o sort.o tidyup.o gags.o script_inst.o script.o\
+sort.o gags.o script_inst.o script.o\
 incoming.o command.o chattable.o alias.o frl.o hash.o vars.o expand.o\
 files.o completion.o iconv.o gagtable.o \
 js.o sqlite.o ipc.o log.o uri.o socket.o nonce.o

Modified: trunk/src/Parse.c
===================================================================
--- trunk/src/Parse.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/Parse.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -30,7 +30,7 @@
 	memmove(bp,bp+1,strlen(bp));
 }
 
-int ParseLine(char *line, char *argv[])
+int ParseLine(char *line, const char *argv[])
 {
 	char *ptr=line;
 	int n=0;
@@ -116,10 +116,11 @@
 	int count=0, ecount=0;
 	int c;
 	Alias al;
-	char *dowhat, *text;
+	const char *dowhat;
+	char *text;
 	char *args = NULL, *ptr, *p2, *tmp;
 	int inlen;
-	char *argv[MAX_ARGC];
+	const char *argv[MAX_ARGC];
 	int argc;
 
 	/* save head of 'cm' for use in help */
@@ -286,7 +287,7 @@
 
 #define min(a,b)  a<b?a:b
 
-int command_compare(char *input, char *comm)
+int command_compare(const char *input, const char *comm)
 {
 	int a=strlen(input);
 	int b=strlen(comm);

Modified: trunk/src/Parse.h
===================================================================
--- trunk/src/Parse.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/Parse.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -3,92 +3,92 @@
 
 typedef struct __cmd
 {
-	char *Command;	/* Command Name */
+	const char *Command;	/* Command Name */
 	unsigned int Rights;	/* Rights needed to see command */
 	unsigned int Args;	/* Minimum valid arguments */
-	char *ArgError;	/* Argument error message */
-	char *Desc;	/* Command description message */
-	void (*Function)(struct __cmd *, int, char **, char *);	/* Function to call */
+	const char *ArgError;	/* Argument error message */
+	const char *Desc;	/* Command description message */
+	void (*Function)(struct __cmd *, int, const char **, char *);
 	unsigned int Show; /* show command in help or not */
 } CommandList;
 
 typedef struct __completion
 {
-	char *Command;				/* Command Name */
+	const char *Command;			/* Command Name */
 	int Mode;				/* Command mode */
 	int FArg;				/* Argument to tab-complete */
 	int LArg;				/* Argument to t-c up to */
 	char *(*CPFunction)(const char *, int);	/* Function to call */
 } CompletionList;
 
-extern int ParseLine(char *, char *[]);
+extern int ParseLine(char *, const char *[]);
 extern int BoolOpt(const char *);
 extern int DoCommand(char *, CommandList *);
 extern void InitParser(void);
-extern int command_compare(char *, char *);
+extern int command_compare(const char *, const char *);
 
 #define MAX_ARGC	128
 
-extern void c_addfol(CommandList *cm, int argc, char **argv, char *args);
-extern void c_autosub(CommandList *cm, int argc, char **argv, char *args);
-extern void c_beep(CommandList *cm, int argc, char **argv, char *args);
-extern void c_board(CommandList *cm, int argc, char **argv, char *args);
-extern void c_cd(CommandList *cm, int argc, char **argv, char *args);
-extern void c_catchup(CommandList *cm, int argc, char **argv, char *args);
-extern void c_changeinfo(CommandList *cm, int argc, char **argv, char *args);
-extern void c_charset(CommandList *cm, int argc, char **argv, char *args);
-extern void c_credits(CommandList *cm, int argc, char **argv, char *args);
-extern void c_colouroff(CommandList *cm, int argc, char **argv, char *args);
-extern void c_contact(CommandList *cm, int argc, char **argv, char *args);
-extern void c_date(CommandList *cm, int argc, char **argv, char *args);
-extern void c_doing(CommandList *cm, int argc, char **argv, char *args);
-extern void c_first(CommandList *cm, int argc, char **argv, char *args);
-extern void c_folder(CommandList *cm, int argc, char **argv, char *args);
-extern void c_help(CommandList *cm, int argc, char **argv, char *args);
-extern void c_inform(CommandList *cm, int argc, char **argv, char *args);
-extern void c_last(CommandList *cm, int argc, char **argv, char *args);
-extern void c_latest(CommandList *cm, int argc, char **argv, char *args);
-extern void c_listall(CommandList *cm, int argc, char **argv, char *args);
-extern void c_listnew(CommandList *cm, int argc, char **argv, char *args);
-extern void c_listusers(CommandList *cm, int argc, char **argv, char *args);
-extern void c_locale(CommandList *cm, int argc, char **argv, char *args);
-extern void c_ls(CommandList *cm, int argc, char **argv, char *args);
-extern void c_mesg(CommandList *cm, int argc, char **argv, char *args);
-extern void c_mod(CommandList *cm, int argc, char **argv, char *args);
-extern void c_msg(CommandList *cm, int argc, char **argv, char *args);
-extern void c_new(CommandList *cm, int argc, char **argv, char *args);
-extern void c_newusers(CommandList *cm, int argc, char **argv, char *args);
-extern void c_passwd(CommandList *cm, int argc, char **argv, char *args);
-extern void c_next(CommandList *cm, int argc, char **argv, char *args);
-extern void c_pwd(CommandList *cm, int argc, char **argv, char *args);
-extern void c_prev(CommandList *cm, int argc, char **argv, char *args);
-extern void c_read(CommandList *cm, int argc, char **argv, char *args);
-extern void c_reply(CommandList *cm, int argc, char **argv, char *args);
-extern void c_resub(CommandList *cm, int argc, char **argv, char *args);
-extern void c_search(CommandList *cm, int argc, char **argv, char *args);
-extern void c_since(CommandList *cm, int argc, char **argv, char *args);
-extern void c_status(CommandList *cm, int argc, char **argv, char *args);
-extern void c_su(CommandList *cm, int argc, char **argv, char *args);
-extern void c_tidyup(CommandList *cm, int argc, char **argv, char *args);
-extern void c_timeout(CommandList *cm, int argc, char **argv, char *args);
-extern void c_tell(CommandList *cm, int argc, char **argv, char *args);
-extern void c_topten(CommandList *cm, int argc, char **argv, char *args);
-extern void c_unsub(CommandList *cm, int argc, char **argv, char *args);
-extern void c_user(CommandList *cm, int argc, char **argv, char *args);
-extern void c_who(CommandList *cm, int argc, char **argv, char *args);
-extern void c_wall(CommandList *cm, int argc, char **argv, char *args);
-extern void c_wiz(CommandList *cm, int argc, char **argv, char *args);
-extern void c_emote(CommandList *cm, int argc, char **argv, char *args);
-extern void c_wizchat(CommandList *cm, int argc, char **argv, char *args);
-extern void c_write(CommandList *cm, int argc, char **argv, char *args);
-extern void c_quit(CommandList *cm, int argc, char **argv, char *args);
-extern void c_save(CommandList *cm, int argc, char **argv, char *args);
-extern void c_timestamp(CommandList *cm, int argc, char **argv, char *args);
-extern void c_postinfo(CommandList *cm, int argc, char **argv, char *args);
-extern void c_chatmode(CommandList *cm, int argc, char **argv, char *args);
-extern void c_version(CommandList *cm, int argc, char **argv, char *args);
-extern void c_alias(CommandList *cm, int argc, char **argv, char *args);
-extern void c_unalias(CommandList *cm, int argc, char **argv, char *args);
+extern void c_addfol(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_autosub(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_beep(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_board(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_cd(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_catchup(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_changeinfo(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_charset(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_credits(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_colouroff(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_contact(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_date(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_doing(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_first(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_folder(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_help(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_inform(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_last(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_latest(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_listall(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_listnew(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_listusers(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_locale(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_ls(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_mesg(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_mod(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_msg(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_new(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_newusers(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_passwd(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_next(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_pwd(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_prev(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_read(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_reply(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_resub(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_search(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_since(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_status(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_su(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_tidyup(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_timeout(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_tell(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_topten(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_unsub(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_user(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_who(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_wall(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_wiz(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_emote(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_wizchat(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_write(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_quit(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_save(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_timestamp(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_postinfo(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_chatmode(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_version(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_alias(CommandList *cm, int argc, const char **argv, char *args);
+extern void c_unalias(CommandList *cm, int argc, const char **argv, char *args);
 
 void help_list(CommandList *c, unsigned int hidestuff);
 char *remove_first_word(char *args);

Modified: trunk/src/add.c
===================================================================
--- trunk/src/add.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/add.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -292,7 +292,7 @@
 			char foo[128];
 			char fullpath[18];
 			long size;
-			char *myeditor;
+			const char *myeditor;
 			int child;
 
 			if (u_reg(user->status))

Modified: trunk/src/alias.c
===================================================================
--- trunk/src/alias.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/alias.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -37,7 +37,7 @@
 }
 
 /* removes the link given by 'name' in the list */
-int DestroyLink(Alias *list, char *name)
+int DestroyLink(Alias *list, const char *name)
 {
  	Alias prev, aptr;
 	int found = 0;
@@ -76,7 +76,7 @@
 }
 
 /* adds the 'from/to' node to the given list, or redefines if in existance */
-int AddLink(Alias *list, char *from, char *to)
+int AddLink(Alias *list, const char *from, const char *to)
 {
 	Alias new;
 	int redefine = 0;
@@ -103,7 +103,7 @@
 }
 
 /* displays the list */
-void ShowLinks(Alias list, char *prompt, char *link, int count)
+void ShowLinks(Alias list, const char *prompt, const char *link, int count)
 {
  	char	buff[10];
  	Alias	al;
@@ -159,7 +159,7 @@
 	}
 }
 
-char *FindLinks(Alias list, char *from)
+char *FindLinks(Alias list, const char *from)
 {
 	Alias al;
 

Modified: trunk/src/alias.h
===================================================================
--- trunk/src/alias.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/alias.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -9,10 +9,10 @@
 } *Alias;
 
 void DestroyAllLinks(Alias *list);
-int DestroyLink(Alias *list, char *name);
-int AddLink(Alias *list, char *from, char *to);
-void ShowLinks(Alias list, char *prompt, char *link, int count);
-char *FindLinks(Alias list, char *from);
+int DestroyLink(Alias *list, const char *name);
+int AddLink(Alias *list, const char *from, const char *to);
+void ShowLinks(Alias list, const char *prompt, const char *link, int count);
+char *FindLinks(Alias list, const char *from);
 char *list_bind(const char *text, int state);
 char *list_bind_rl(const char *text, int state);
 char *NextLink(Alias list, char *prev);

Modified: trunk/src/bb.h
===================================================================
--- trunk/src/bb.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/bb.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -99,11 +99,11 @@
 
 typedef struct gag_info
 {
-	char *name;			/* gag filter name */
-	char *text;			/* gag realname */
-	char *untext;			/* ungag realname */
-	char *gag;			/* text on gag */
-	char *ungag;			/* text on ungag */
+	const char *name;		/* gag filter name */
+	const char *text;		/* gag realname */
+	const char *untext;		/* ungag realname */
+	const char *gag;		/* text on gag */
+	const char *ungag;		/* text on ungag */
 	void (*Function)(char *);	/* gag function to call */
 } GagInfo;
 

Modified: trunk/src/edit.c
===================================================================
--- trunk/src/edit.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/edit.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -4,6 +4,7 @@
  *       see licence for furthur information.            *
  *********************************************************/
 #include <stdio.h>
+#include <inttypes.h>
 #include <fcntl.h>
 #include <signal.h>
 #include <string.h>
@@ -32,7 +33,7 @@
 #include "read.h"
 #include "intl.h"
 
-char *partlist_user[]={
+const char *partlist_user[]={
 "edit", "status", "special", "groups", "passwd", "chatprivs", "chatmode",
 "realname", "username", "contact", "timeout", "lastread", "view", "room",
 "clearignore", "protection", "doing", NULL};
@@ -87,7 +88,8 @@
 	}
 }
 
-static void show_change(char *old, char *new, char *fmt, ...)
+static void show_change(char *old, char *new, const char *fmt, ...) __attribute__((format(printf,3,4)));
+static void show_change(char *old, char *new, const char *fmt, ...)
 {
 	va_list va;
 	char text[MAXTEXTLENGTH];
@@ -138,7 +140,7 @@
 	broadcast(3, text);
 }
 
-void edit_user(char *args, char *name)
+void edit_user(const char *args, const char *name)
 {
 	int32_t usrposn;
 	struct person usr;
@@ -461,7 +463,7 @@
 			ipc_send_to_username(usr.name, IPC_DOING, usr.doing);
 			printf(_("New status set.\n"));
 			broadcast(3, "%s has just cleared %s's status.", user->name, usr.name);
-			mwlog("CHANGE(STATUS) cleared %s", usr.name, doing);
+			mwlog("CHANGE(STATUS) cleared %s", doing);
 		}
 	}else
 	if (stringcmp(args,"timeout",1))
@@ -509,9 +511,9 @@
 				usr.timeout=tv;
 				snprintf(tt,20,"%d",tv);
 				ipc_send_to_username(usr.name, IPC_TIMEOUT, tt);
-				broadcast(3, "%s has just changed %s's timeout to %ld seconds.", user->name, usr.name, usr.timeout);
-				printf(_("New timeout set to %ld seconds.\n"),(long)usr.timeout);
-				mwlog("CHANGE(TIMEOUT) of %s to %ld seconds", usr.name, usr.timeout);
+				broadcast(3, "%s has just changed %s's timeout to %"PRId32" seconds.", user->name, usr.name, usr.timeout);
+				printf(_("New timeout set to %"PRId32" seconds.\n"), usr.timeout);
+				mwlog("CHANGE(TIMEOUT) of %s to %"PRId32" seconds", usr.name, usr.timeout);
 			}
 		}
 	}else
@@ -594,7 +596,7 @@
 }
 
 
-char *partlist_folder[]={"status", "groups", "name", "size", "view", "topic",
+const char *partlist_folder[]={"status", "groups", "name", "size", "view", "topic",
 "delete", NULL};
 
 static void users_lastread(int folnum)
@@ -615,7 +617,7 @@
 	close(ufile);
 }
 
-void edit_folder(char *args, char *name)
+void edit_folder(const char *args, const char *name)
 {
 	char fullpath[256];
 	int folnum;
@@ -788,10 +790,10 @@
 	close(afile);	
 }	
 
-char *partlist_mesg[]={
+const char *partlist_mesg[]={
 "edit", "to", "subject", "delete", "undelete", "status", NULL};
 
-void mesg_edit(char *args, char *foldername, int msgno, struct person *usr)
+void mesg_edit(const char *args, char *foldername, int msgno, struct person *usr)
 {
 	int fd, text;
 	struct Header head;
@@ -825,7 +827,7 @@
 		char foo[128];
 		long size;
 		int child;
-		char *myeditor;
+		const char *myeditor;
 
 		if (perms_drop()==-1) 
 		{

Modified: trunk/src/edit.h
===================================================================
--- trunk/src/edit.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/edit.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -4,9 +4,9 @@
 #include "user.h"
 
 void time_on(long u);
-void edit_user(char *args, char *name);
-void edit_folder(char *args, char *name);
+void edit_user(const char *args, const char *name);
+void edit_folder(const char *args, const char *name);
 void edit_contact(void);
-void mesg_edit(char *args, char *foldername, int msgno, struct person *usr);
+void mesg_edit(const char *args, char *foldername, int msgno, struct person *usr);
 
 #endif /* EDIT_H */

Modified: trunk/src/files.c
===================================================================
--- trunk/src/files.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/files.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -245,7 +245,7 @@
 	free(record);
 }
 
-int foldernumber(char *name)
+int foldernumber(const char *name)
 {
 	/* return number of folder name */
 	int file;

Modified: trunk/src/files.h
===================================================================
--- trunk/src/files.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/files.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -24,7 +24,7 @@
 void who_add(int pid, int32_t posn);
 void who_delete(int pid);
 void create_folder_file(void);
-int foldernumber(char *name);
+int foldernumber(const char *name);
 int get_folder_entry(int file, struct folder *tmp);
 int get_folder_number(struct folder *fol, int num);
 

Modified: trunk/src/frl.c
===================================================================
--- trunk/src/frl.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/frl.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -63,7 +63,7 @@
 **      Return: NULL if end of file, and no text             **
 **              <text> if there is any                       **
 **************************************************************/
-char *frl_line_nspace(FILE *f, char *comment)
+char *frl_line_nspace(FILE *f, const char *comment)
 {
 	char	*str = NULL;
 	char	*ptr = NULL;

Modified: trunk/src/frl.h
===================================================================
--- trunk/src/frl.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/frl.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -35,7 +35,7 @@
 **      Return: NULL if end of file, and no text             **
 **              <text> if there is any                       **
 **************************************************************/
-char *frl_line_nspace(FILE *f, char *comment);
+char *frl_line_nspace(FILE *f, const char *comment);
 
 
 long num_lines_read(void);

Modified: trunk/src/gags.c
===================================================================
--- trunk/src/gags.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/gags.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -33,7 +33,7 @@
 }
 
 /* replaces every word in a string with another string */
-static void gag_wordrep(char *text,char *rep)
+static void gag_wordrep(char *text, const char *rep)
 {
 	int wordcount=1;
 	char *temp=text;
@@ -233,7 +233,7 @@
 void gag_tnarg(char *text)
 {
 	char *buff = duplstr(text);
-	char *match_list[] = { "buffy", "willow", "slayer", "vampire",
+	const char *match_list[] = { "buffy", "willow", "slayer", "vampire",
 				"cordelia", "sex", "cordy", "3-some", "cordie",
 				"cordi", "three-some", "three some", "shag",
 				"lesbian", "sauce", "mayonaise", "cream", NULL };
@@ -304,7 +304,7 @@
         gag_wordrep(text,"am ");
 }
 
-static char *lookup_morse(char c)
+static const char *lookup_morse(const char c)
 {
 	switch(toupper(c))
 	{

Modified: trunk/src/gagtable.h
===================================================================
--- trunk/src/gagtable.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/gagtable.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -2,8 +2,8 @@
 #define GAGTABLE_H
 
 struct pattern {
-    char *from;
-    char *to;
+    const char *from;
+    const char *to;
 };
 
 extern const struct pattern chef[];

Modified: trunk/src/getpass.c
===================================================================
--- trunk/src/getpass.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/getpass.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -24,8 +24,10 @@
 			getchar();
 			getchar();
 		}
-		if(c==EOF)
-			return("");
+		if(c==EOF) {
+			buf[0] = '\0';
+			return(buf);
+		}
 		if(pos&&(c==8||c==127))
 			pos--;
 		else if(c==10 || c==13)

Modified: trunk/src/hash.c
===================================================================
--- trunk/src/hash.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/hash.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -179,13 +179,13 @@
     return newrec;
 }
 
-void hash_set_p(hash_op_t *op, rectype_t type, void *value)
+void hash_set_p(hash_op_t *op, rectype_t type, const char *value)
 {
     struct hashrec *newrec;
 
     newrec = hash_enter(op);
     newrec->type = type;
-    newrec->data.pdata = value;
+    newrec->data.pdata = strdup(value);
 }
 
 void hash_set_i(hash_op_t *op, rectype_t type, int value)

Modified: trunk/src/hash.h
===================================================================
--- trunk/src/hash.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/hash.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -59,7 +59,7 @@
 void hash_op_init(hash_op_t *op, int field);
 int hash_search(hash_op_t *op, const char *key);
 void hash_op_forgetkey(hash_op_t *op);
-void hash_set_p(hash_op_t *op, rectype_t type, void *value);
+void hash_set_p(hash_op_t *op, rectype_t type, const char *value);
 void hash_set_i(hash_op_t *op, rectype_t type, int value);
 void hash_delete(hash_op_t *op);
 void hash_purge(int field);

Modified: trunk/src/iconv.c
===================================================================
--- trunk/src/iconv.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/iconv.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -44,12 +44,13 @@
 	it is assumed this function is used on a system that understands UTF-8!
 	if not you will get EOUTPUTNOTSUPPORTED.
 */	
-int convert_string_charset(char *input_buffer, char *input_charset, size_t input_length,
-							char *output_buffer, char *output_charset, size_t output_buffer_length,
-							size_t *output_bytes_used,  size_t *irreversible_count,
-							size_t *unconverted_bytes, size_t *invalid_count, char *substitute)
+int convert_string_charset(char *input_buffer, const char *input_charset, size_t input_length,
+                 char *output_buffer, const char *output_charset, size_t output_buffer_length,
+                 size_t *output_bytes_used,  size_t *irreversible_count,
+                 size_t *unconverted_bytes, size_t *invalid_count, const char *substitute)
 {
-	char *input_ptr, *output_ptr;
+	const char *input_ptr;
+	char *output_ptr;
 	iconv_t conversion_descriptor;
 	size_t input_bytes_left, output_bytes_left, not_conv_count=0;
 	
@@ -115,9 +116,9 @@
 	output_bytes_left=8;
 	input_ptr=null_string;
 	output_ptr=converted_null;
-	nconv = iconv( conversion_descriptor,
-				   &input_ptr, &input_bytes_left,
-				   &output_ptr, &output_bytes_left );
+	nconv = iconv(conversion_descriptor,
+	              (char **)&input_ptr, &input_bytes_left,
+	              &output_ptr, &output_bytes_left);
 	if(nconv!=0) {
 		iconv_close(conversion_descriptor);
 		return ECONVERTNULLFAILED;
@@ -140,9 +141,9 @@
 		input_bytes_left = strlen(substitute);
 		input_ptr=substitute;
 		output_ptr=converted_substitute;
-		nconv = iconv( conversion_descriptor,
-					   &input_ptr, &input_bytes_left,
-					   &output_ptr, &output_bytes_left );
+		nconv = iconv(conversion_descriptor,
+		              (char**)&input_ptr, &input_bytes_left,
+		              &output_ptr, &output_bytes_left );
 		if(nconv!=0) {
 			free(converted_substitute);
 			iconv_close(conversion_descriptor);
@@ -171,9 +172,9 @@
 	output_bytes_left = output_buffer_length - converted_null_length;
 	
 	while(input_bytes_left > 0) {
-		nconv = iconv( conversion_descriptor,
-					   &input_ptr, &input_bytes_left,
-					   &output_ptr, &output_bytes_left );
+		nconv = iconv(conversion_descriptor,
+		              (char **)&input_ptr, &input_bytes_left,
+		              &output_ptr, &output_bytes_left );
 		if(nconv == -1) {
 			if(errno == EILSEQ || errno == EINVAL) {
 				/* invalid input sequence, we skip over its in the input buffer */
@@ -269,7 +270,7 @@
 }
 
 /* set local charset independently of locale */
-int set_local_charset(char * set)
+int set_local_charset(const char * set)
 {
     iconv_t conv;
 
@@ -292,9 +293,9 @@
 }
 
 /* change locale */
-int set_locale(char * locale)
+int set_locale(const char *locale)
 {
-    char * set = strchr(locale, '.');
+    const char *set = strchr(locale, '.');
     char * oldset;
     if (!set || !strcmp(".", set)) { /* no charset? or "C" locale? */
 	if (!strcmp(locale, "C"))
@@ -319,7 +320,7 @@
 }
 
 /* wrapper around set_locale printing failure messages */
-int locale_mesgs(char * locale)
+int locale_mesgs(const char * locale)
 {
     int reason = set_locale(locale);
     switch (reason) {

Modified: trunk/src/iconv.h
===================================================================
--- trunk/src/iconv.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/iconv.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -3,26 +3,26 @@
 
 #include <wchar.h>
 
-int convert_string_charset(char *input_buffer, char *input_charset, size_t input_length,
-							char *output_buffer, char *output_charset, size_t output_buffer_length,
-							size_t *output_bytes_used,  size_t *irreversible_count,
-							size_t *unconverted_bytes, size_t *invalid_count, char *substitute);
+int convert_string_charset(char *input_buffer, const char *input_charset, size_t input_length,
+                 char *output_buffer, const char *output_charset, size_t output_buffer_length,
+                 size_t *output_bytes_used,  size_t *irreversible_count,
+                 size_t *unconverted_bytes, size_t *invalid_count, const char *substitute);
 
 int utf8_cleanup(char *buff);
 
 /* set local charset independently of locale */
- int set_local_charset(char * set);
+int set_local_charset(const char * set);
 
 /* query local charset */
- char * get_local_charset(void);
+char *get_local_charset(void);
 
 /* wrapper around set_locale printing failure messages */
-int locale_mesgs(char * locale);
+int locale_mesgs(const char * locale);
 
 /* set locale */
- int set_locale(char * locale);
+int set_locale(const char * locale);
 
- void init_locale(void);
+void init_locale(void);
 
 #define ENOOUTPUTCS -1
 #define ENOINPUTCS -2

Modified: trunk/src/init.c
===================================================================
--- trunk/src/init.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/init.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -34,9 +34,6 @@
 
 extern struct person *user;
 
-int ReadInitFile(char *base, char *filename);
-void DestroyFunction(char *);
-
 /* drop and restore user level privs */
 static int private_myid = -1;
 
@@ -55,38 +52,8 @@
 	}
 }
 
-void LoadInitFile(char *name)
+static int ReadInitFile(const char *base, const char *filename)
 {
-	struct passwd *pw;
-	int dofree=0;
-
-	if (name == NULL) {
-		char * value = userdb_get(USERDB_PRIVATE, user->name, "mwrc");
-		if (value != NULL && value[0]!=0) {
-			name=value;
-			dofree=1;
-		}
-		if (value != NULL && value[0]==0)
-			free(value);
-	}
-	if (name == NULL) name = ".mwrc";
-
-	if ((pw=getpwuid(getuid()))!=NULL)
-	{
-		/* try to load the personal copy*/
-		if (ReadInitFile(pw->pw_dir, name)) {
-			/* try the system wide one instead */
-			if (ReadInitFile(HOMEPATH"/scripts", name)) {
-				if (strcmp(".mwrc", name)!=0)
-					fprintf(stderr, "Could not find file %s to load it.\n", name);
-			}
-		}
-	}
-	if (dofree) free(name);
-}
-
-int ReadInitFile(char *base, char *filename)
-{
 	FILE *file;	
 	char *buff, *backup, *header;
 	char path[1024];
@@ -439,4 +406,40 @@
 	return 0;
 }
 
+void LoadInitFile(const char *name)
+{
+	char *mwrc = NULL;
+	struct passwd *pw;
+	int dofree=0;
 
+	if (name == NULL) {
+		mwrc = userdb_get(USERDB_PRIVATE, user->name, "mwrc");
+		if (mwrc != NULL && mwrc[0]!=0) {
+			name = mwrc;
+			dofree=1;
+		}
+		if (mwrc != NULL && mwrc[0]==0)
+			free(mwrc);
+	}
+	if (name == NULL) name = ".mwrc";
+
+	if ((pw=getpwuid(getuid())) == NULL) {
+		fprintf(stderr, _("Failed to get user data\n"));
+		goto out;
+	}
+	/* try to load the personal copy*/
+	if (!ReadInitFile(pw->pw_dir, name)) {
+		fprintf(stderr, _("Failed to read init file %s/%s\n"), pw->pw_dir, name);
+		goto out;
+	}
+
+	/* try the system wide one instead */
+	if (ReadInitFile(HOMEPATH"/scripts", name)) {
+		if (strcmp(".mwrc", name)!=0)
+			fprintf(stderr, _("Could not find init file %s\n"), name);
+	}
+out:
+	if (dofree) free(mwrc);
+}
+
+

Modified: trunk/src/init.h
===================================================================
--- trunk/src/init.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/init.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -3,6 +3,6 @@
 
 int perms_drop(void);
 void perms_restore(void);
-void LoadInitFile(char *name);
+void LoadInitFile(const char *name);
 
 #endif /* INIT_H */

Modified: trunk/src/js.c
===================================================================
--- trunk/src/js.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/js.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -1046,7 +1046,7 @@
 #endif
 
 /* Execute some javascript commands */
-int js_exec(char * name, int argc, char **argvc) {
+int js_exec(char *name, int argc, const char **argvc) {
 	int i;
 	jsval rval;
 	jsval *argv;
@@ -1121,7 +1121,7 @@
 /* Load and execute a file in javascript */
 /* Files are assumed to be in utf-8 and an error is reported if it isn't */
 /* Non utf-8 chars are stripped */
-int load_jsfile(FILE *f, char *filename)
+int load_jsfile(FILE *f, const char *filename)
 {
 	char *body;
 	int where, len;

Modified: trunk/src/js.h
===================================================================
--- trunk/src/js.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/js.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -4,8 +4,8 @@
 #include <stdio.h>
 
 int js_isrunning(void);
-int js_exec(char *name, int argc, char **argvc);
-int load_jsfile(FILE *f, char *filename);
+int js_exec(char *name, int argc, const char **argvc);
+int load_jsfile(FILE *f, const char *filename);
 int load_js(char *filename);
 int is_js(char *name);
 void js_stop_execution(void);

Modified: trunk/src/log.c
===================================================================
--- trunk/src/log.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/log.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -57,7 +57,7 @@
  */
 
 struct uripatt {
-	char *	regex;	/* the pattern */
+	const char *regex;
 	int   	regflags; /* compile flags */
 	regex_t	*patt; /* compiled version */
 	enum { END=0, URL, FLAG, IGNORE, NOLOG, TAG } type;

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/main.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -92,7 +92,7 @@
 int autochat=0;
 int autowho=0;
 int runautoexec=1;
-char *autoexec_arg;
+const char *autoexec_arg;
 char *targethost = NULL;
 
 struct alarm *timeout_event_1, *timeout_event_2;
@@ -297,7 +297,7 @@
 	}
 }
 
-static int match_arg_str(char *srch, char *sub)
+static int match_arg_str(char *srch, const char *sub)
 {
 	char *match;
 	int value = 0;
@@ -565,7 +565,8 @@
 		exit(0);
 	}
 
-	if (inarg_num>-1) autoexec_arg = argv[inarg_num]; else autoexec_arg = "";
+	if (inarg_num>-1) autoexec_arg = argv[inarg_num];
+	else autoexec_arg = "";
 
 	/* set up internet mode */
 	if (inet_mode)
@@ -879,7 +880,7 @@
 			script_output=1;
 			while ((event_name = NextLink(eventin_list, event_name)) != NULL) {
 				if (is_js(event_name)) {
-					char *argv[2];
+					const char *argv[2];
 					argv[0] = cmd;
 					argv[1] = NULL;
 					busy++;
@@ -1132,7 +1133,7 @@
 
 }
 
-void display_message(char *text, int beeps, int newline)
+void display_message(const char *text, int beeps, int newline)
 {
 	static int	count = 0;
 	int		len;
@@ -1403,7 +1404,7 @@
 		
 /* start of Readline Commands */
 
-char *dupstr(char *text, char *prepend)
+char *dupstr(const char *text, const char *prepend)
 {
 	char *c;
 
@@ -1717,7 +1718,7 @@
 char *list_commands(const char *text, int state)
 {
 	static int i, len;
-	char *name;
+	const char *name;
 	char *rtext;
 
 	if (state==0)
@@ -1750,7 +1751,7 @@
 char *list_chat_commands(const char *text, int state)
 {
 	static int i, len;
-	char *name;	
+	const char *name;
 
 	if (state==0)
 	{
@@ -2023,7 +2024,7 @@
 	return(NULL);
 }
 
-void c_version(CommandList *cm, int argc, char **argv, char *args)
+void c_version(CommandList *cm, int argc, const char **argv, char *args)
 {
 #ifdef RELEASE
 	if (atoi(VER_TWK) > 0)
@@ -2036,7 +2037,7 @@
 	printf(_("Built by %s on %s\n"), BUILD_USER, BUILD_DATE);
 }
 
-void devel_msg(char *func, char *fmt, ...)
+void devel_msg(const char *func, const char *fmt, ...)
 {
 	va_list va;
 	char text[MAXTEXTLENGTH];

Modified: trunk/src/main.h
===================================================================
--- trunk/src/main.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/main.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -2,13 +2,13 @@
 #define MAIN_H
 
 void close_down(int exitmode, char *sourceuser, char *reason);
-void display_message(char *text, int beeps, int newline);
+void display_message(const char *text, int beeps, int newline);
 void printfile(char *filename);
 void broadcast_onoffcode(int code, int method, const char *sourceuser, const char *reason);
 void reset_timeout(int secs);
 int idle(int fd, int millis);
 void set_rights(void);
-char *dupstr(char *text, char *prepend);
+char *dupstr(const char *text, const char *prepend);
 
 char *part_who_talk(const char *text, int status);
 char *part_who(const char *text, int status);
@@ -21,7 +21,7 @@
 char *list_chat_commands(const char *text, int state);
 char *find_folder(const char *text, int state);
 
-void devel_msg(char *func, char *fmt, ...);
+void devel_msg(const char *func, const char *fmt, ...) __attribute__((format(printf,2,3)));
 
 int disable_rl(int savetext);
 

Modified: trunk/src/mesg.c
===================================================================
--- trunk/src/mesg.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/mesg.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -16,7 +16,7 @@
 #include "intl.h"
 #include "mesg.h"
 
-void send_mesg(char *from, char *to, char *text, int wiz)
+void send_mesg(char *from, const char *to, char *text, int wiz)
 {
 	char buff[MAXTEXTLENGTH];
 	struct person * usr;
@@ -111,7 +111,7 @@
 0x100= raw text, eg !su, .mrod
 */
 
-void broadcast(int state, char *fmt, ...) 
+void broadcast(int state, const char *fmt, ...) 
 {
 	char buff[MAXTEXTLENGTH];
 	char text[MAXTEXTLENGTH];

Modified: trunk/src/mesg.h
===================================================================
--- trunk/src/mesg.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/mesg.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -5,9 +5,9 @@
 #include "folders.h"
 #include "bb.h"
 
-void broadcast(int state, char *fmt, ...);
+void broadcast(int state, const char *fmt, ...) __attribute__((format(printf,2,3)));
 void inform_of_mail(char *to);
 void postinfo(struct person *who, struct folder *fol, struct Header *mesg);
-void send_mesg(char *from, char *to, char *text, int wiz);
+void send_mesg(char *from, const char *to, char *text, int wiz);
 
 #endif /* MESG_H */

Modified: trunk/src/newmain.c
===================================================================
--- trunk/src/newmain.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/newmain.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -30,8 +30,6 @@
 #include "who.h"
 #include "mod.h"
 #include "mesg.h"
-#include "topten.h"
-#include "tidyup.h"
 #include "getpass.h"
 #include "add.h"
 #include "init.h"
@@ -41,6 +39,7 @@
 #include "ipc.h"
 #include "log.h"
 #include "intl.h"
+#include "sort.h"
 
 #include "alias.h"
 extern Alias alias_list;
@@ -66,7 +65,7 @@
 /* prototype */
 void help_list(CommandList *cm, unsigned int hidestuff);
 
-static void help(char *topic, int wiz)
+static void help(const char *topic, int wiz)
 {
 	CommandList	*c;
 	char		*x = NULL;
@@ -141,7 +140,7 @@
 	}
 }
 
-void c_help(CommandList *cm, int argc, char **argv, char *args)
+void c_help(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc>1)
 		help(argv[1], u_god(user->status));
@@ -149,7 +148,7 @@
 		help_list(table, 1);
 }
 
-void c_cd(CommandList *cm, int argc, char **argv, char *args)
+void c_cd(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int i;
 	if ((i=foldernumber(argv[1]))==-1)
@@ -171,22 +170,22 @@
 	}
 }
 
-void c_addfol(CommandList *cm, int argc, char **argv, char *args)
+void c_addfol(CommandList *cm, int argc, const char **argv, char *args)
 {
 	add_folder();
 }
 
-void c_listnew(CommandList *cm, int argc, char **argv, char *args)
+void c_listnew(CommandList *cm, int argc, const char **argv, char *args)
 {
 	list_new_items(user,true);
 }
 
-void c_listall(CommandList *cm, int argc, char **argv, char *args)
+void c_listall(CommandList *cm, int argc, const char **argv, char *args)
 {
 	list_new_items(user,false);
 }
 
-void c_new(CommandList *cm, int argc, char **argv, char *args)
+void c_new(CommandList *cm, int argc, const char **argv, char *args)
 {
 	busy++;
 	new(user);
@@ -195,7 +194,7 @@
 	update_user(user,userposn);
 }
 
-void c_last(CommandList *cm, int argc, char **argv, char *args)
+void c_last(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (currentfolder < 0) {
 		printf(_("No current folder.\n"));
@@ -207,7 +206,7 @@
 
 }
 
-void c_first(CommandList *cm, int argc, char **argv, char *args)
+void c_first(CommandList *cm, int argc, const char **argv, char *args)
 {
 	last_mesg=fold->first;
 	printf(_("Moved to start of folder. (message %d)\n"),last_mesg);
@@ -215,24 +214,24 @@
 
 }
 
-void c_user(CommandList *cm, int argc, char **argv, char *args)
+void c_user(CommandList *cm, int argc, const char **argv, char *args)
 {
 	busy++;
 	edit_user(argv[1],argv[2]);
 	busy--;
 }
 
-void c_search(CommandList *cm, int argc, char **argv, char *args)
+void c_search(CommandList *cm, int argc, const char **argv, char *args)
 {
 	search(argv[1],argv[2]);
 }
 
-void c_folder(CommandList *cm, int argc, char **argv, char *args)
+void c_folder(CommandList *cm, int argc, const char **argv, char *args)
 {
 	edit_folder(argv[1],argv[2]);
 }
 
-void c_msg(CommandList *cm, int argc, char **argv, char *args)
+void c_msg(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -257,7 +256,7 @@
 	update_user(user,userposn);
 }
 
-void c_inform(CommandList *cm, int argc, char **argv, char *args)
+void c_inform(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -282,7 +281,7 @@
 	update_user(user,userposn);
 }
 
-void c_colouroff(CommandList *cm, int argc, char **argv, char *args)
+void c_colouroff(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z;
 
@@ -385,7 +384,7 @@
 	update_user(user,userposn);
 }
 
-void c_beep(CommandList *cm, int argc, char **argv, char *args)
+void c_beep(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -410,7 +409,7 @@
 	update_user(user,userposn);
 }
 
-void c_wizchat(CommandList *cm, int argc, char **argv, char *args)
+void c_wizchat(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -435,7 +434,7 @@
 	update_user(user,userposn);
 }
 
-void c_autosub(CommandList *cm, int argc, char **argv, char *args)
+void c_autosub(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int t,n;
 
@@ -456,7 +455,7 @@
 	}
 }
 
-void c_su(CommandList *cm, int argc, char **argv, char *args)
+void c_su(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	
@@ -484,7 +483,7 @@
 	set_rights();
 }
 
-void c_mesg(CommandList *cm, int argc, char **argv, char *args)
+void c_mesg(CommandList *cm, int argc, const char **argv, char *args)
 {
 	update_user(user,userposn);
 	busy++;
@@ -493,18 +492,18 @@
 	mwlog("MESSAGE %s %s:%d",argv[1], fold->name, atoi(argv[2]));
 }
 
-void c_latest(CommandList *cm, int argc, char **argv, char *args)
+void c_latest(CommandList *cm, int argc, const char **argv, char *args)
 {
 	latest(user);
 }
 
-void c_who(CommandList *cm, int argc, char **argv, char *args)
+void c_who(CommandList *cm, int argc, const char **argv, char *args)
 {
 	update_user(user,userposn);
 	who_list(0);
 }
 
-void c_tell(CommandList *cm, int argc, char **argv, char *args)
+void c_tell(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (s_coventry(user->special))
 		printf(_("You have been sent to 'coventry' you are not allowed to talk to anyone..\n"));
@@ -519,7 +518,7 @@
 	}
 }
 
-void c_wiz(CommandList *cm, int argc, char **argv, char *args)
+void c_wiz(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -528,7 +527,7 @@
 	broadcast(2, "%s", text);
 }
 
-void c_emote(CommandList *cm, int argc, char **argv, char *args)
+void c_emote(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -537,7 +536,7 @@
 	broadcast(2, "%s", text);
 }
 
-void c_wall(CommandList *cm, int argc, char **argv, char *args)
+void c_wall(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -546,7 +545,7 @@
 	broadcast(0, "%s", text);
 }
 
-void c_doing(CommandList *cm, int argc, char **argv, char *args)
+void c_doing(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc > 1) {
 		int overflow = (strlen(args) + 1) - DOINGSIZE;
@@ -569,7 +568,7 @@
 	}
 }
 
-void c_pwd(CommandList *cm, int argc, char **argv, char *args)
+void c_pwd(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (currentfolder < 0) {
 		printf(_("No current folder.\n"));
@@ -582,7 +581,7 @@
 		printf(_("You last read message %d.\n"),last_mesg);
 }
 
-void c_ls(CommandList *cm, int argc, char **argv, char *args)
+void c_ls(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int many;
 	if (allowed_r(fold,user))
@@ -594,21 +593,223 @@
 		printf(_("You are not permitted to read this folder.\n"));
 }
 
-void c_topten(CommandList *cm, int argc, char **argv, char *args)
+void c_topten(CommandList *cm, int argc, const char **argv, char *args)
 {
-	topten(argc, argv);
+	struct listing *head=NULL;
+	char fullpath[PATHSIZE];
+	struct Header hdr;
+	struct listing *lnew;
+	struct listing *ptr;
+	int file;
+	int count;
+	char buff[10];
+	int screen_height = screen_h();
+
+	if (argc!=2)
+	{
+		printf("Usage: topten <foldername>\n");
+		return;
+	}
+
+	sprintf(fullpath,"%s/%s%s",STATEDIR,argv[1],INDEX_END);
+	if (access(fullpath,00))
+	{
+		printf("Folder %s not found.\n",argv[1]);
+		return;
+	}
+	if ((file=open(fullpath,O_RDONLY))<0)
+	{
+		perror("topten folder open");
+		return;
+	}
+	lnew=(struct listing *)malloc(sizeof(*lnew));
+	while(read(file,&hdr,sizeof(hdr))>0)
+	{
+		struct listing *listing = head;
+		while (listing != NULL && strcasecmp(hdr.from, ptr->name))
+			listing = listing->next;
+
+		if (listing != NULL)
+		{
+			listing->count++;
+		 	listing->size+=hdr.size;
+		}
+		else
+		{
+			strcpy(lnew->name,hdr.from);
+			lnew->count=1;
+			lnew->size=hdr.size;
+			lnew->next=head;
+			head=lnew;
+			lnew=(struct listing *)malloc(sizeof(*lnew));
+		}
+	}
+	head=Sort(head);
+
+	printf("Top posters in folder %s\n",argv[1]);
+	printf("In order of Total size of text posted.\n");
+
+	ptr=head;
+	count=2;
+	while (ptr!=NULL)
+	{
+		printf("Name: %*s   %3d Msgs.   %5d bytes (%2.1fK)\n",NAMESIZE,ptr->name,ptr->count,ptr->size,ptr->size/1024.0);
+		ptr=ptr->next;
+		count++;
+		if (count>=screen_height-2)
+		{
+			printf("---more---\r");
+			get_str(buff, 5);
+			printf("          \r");
+			if (*buff=='q' || *buff=='Q') exit(0);
+			count=0;
+		}
+	}
 }
 
-void c_tidyup(CommandList *cm, int argc, char **argv, char *args)
+#define NEW_END	".t"
+void c_tidyup(CommandList *cm, int argc, const char **argv, char *args)
 {
+	struct Header idx;
+	char *textbuff;
+	int textin,textout;
+	int indexin,indexout;
+	int limit;
+	int counter=0;
+
+	int ffile;
+	int i;
+	int first=0xffff;
+	struct folder info;
+
 	printf(_("WARNING: This command should not be run whilst people are using\n"));
 	printf(_("         the bulletin board, please exercise caution.\n"));
 	printf("\n");
 
-	tidyup(argc, argv);
+	char fullpath[PATHSIZE];
+	char fullpath2[PATHSIZE];
+	
+	if (argc!=3)
+	{
+	 	printf("Usage: tidyup <foldername> <mesg no>\n");
+	 	return;
+	}
+
+	/* locate the folder that you want to tidy. */
+	if ((ffile=openfolderfile(O_RDWR))<0)
+	{
+		perror("folders");
+		exit(-1);
+	}
+	
+	do {
+		i=read(ffile,&info,sizeof(info));
+	}while (i==sizeof(info) && !stringcmp(info.name,argv[1],-1));
+
+	if (i<sizeof(info))
+	{
+		printf("Folder %s not found.\n",argv[1]);
+		return;
+	}
+
+	/* display relavant info */
+	printf("Folder: %s,  Topic: %s\n",info.name,info.topic);
+	printf("Messages %d to %d\n",info.first,info.last);
+
+	limit=atoi(argv[2]);
+	if (limit<info.first || limit>=info.last)
+	{
+	 	printf("You must leave at least one message, or go and delete the folder.\n");
+	 	return;
+	}
+
+	/* open relevant folder index */
+	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"INDEX_END,info.name);
+	if (access(fullpath,00))
+	{
+		printf("Folder %s not found.\n",info.name);
+		return;
+	}
+	if ((indexin=open(fullpath,O_RDONLY))<0)
+	{
+		perror("tidyup folder_index open");
+		return;
+	}
+	Lock_File(indexin);
+
+	/* open relevant folder text */
+	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"TEXT_END,info.name);
+	if (access(fullpath,00))
+	{
+		printf("Folder %s text file not found.\n",info.name);
+		return;
+	}
+	if ((textin=open(fullpath,O_RDONLY))<0)
+	{
+		perror("tidyup folder_text open");
+		return;
+	}
+	Lock_File(textin);
+
+	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"INDEX_END NEW_END,info.name);
+	if ((indexout=open(fullpath,O_WRONLY|O_CREAT,0600))<0)
+	{
+		perror(fullpath);
+		exit(-1);
+	}
+	Lock_File(indexout);
+
+	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"TEXT_END NEW_END,info.name);
+	if ((textout=open(fullpath,O_WRONLY|O_CREAT,0600))<0)
+	{
+		perror(fullpath);
+		exit(-1);
+	}
+	Lock_File(textout);
+
+	printf("Copying all messages from number %d.\n", limit);
+	while(read(indexin,&idx,sizeof(idx))>0)
+	{
+		/* if index is the start index or later, copy it */
+		if (idx.Ref>=limit && !(idx.status&2) && idx.Ref <= info.last)
+		{
+			first=idx.Ref<first?idx.Ref:first;
+			textbuff=(char *)malloc(idx.size+1);
+			lseek(textin,idx.datafield,0);
+			read(textin,textbuff,idx.size);
+			idx.datafield=lseek(textout,0,1);
+			write(textout,textbuff,idx.size);
+			write(indexout,&idx,sizeof(idx));
+			free(textbuff);
+			counter++;
+		}
+	}
+	printf("Copy complete, %d messages copied.\n",counter);
+	printf("First message is now #%d\n",first);
+	printf("Updating Real Folder...\n");
+	close(indexout);
+
+	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"INDEX_END,info.name);
+	snprintf(fullpath2,PATHSIZE-1,STATEDIR"/%s"INDEX_END NEW_END,info.name);
+	if (rename(fullpath2,fullpath)) perror("rename");
+	Unlock_File(indexin);
+	close(indexin);
+
+	close(textout);
+	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"TEXT_END,info.name);
+	snprintf(fullpath2,PATHSIZE-1,STATEDIR"/%s"TEXT_END NEW_END,info.name);
+	if (rename(fullpath2,fullpath)) perror("rename");
+	Unlock_File(textin);
+	close(textin);
+
+	info.first=first;
+	if ((lseek(ffile,-sizeof(info),SEEK_CUR))<0)
+		perror("seek");
+	write(ffile,&info,sizeof(info));
+	close(ffile);
 }
 
-void c_board(CommandList *cm, int argc, char **argv, char *args)
+void c_board(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int ftmp;
 
@@ -642,27 +843,27 @@
 		printf(_("Do you want to lock or unlock it.\n"));
 }
 
-void c_listusers(CommandList *cm, int argc, char **argv, char *args)
+void c_listusers(CommandList *cm, int argc, const char **argv, char *args)
 {
 	list_users(false);
 }
 
-void c_newusers(CommandList *cm, int argc, char **argv, char *args)
+void c_newusers(CommandList *cm, int argc, const char **argv, char *args)
 {
 	list_users(true);
 }
 
-void c_since(CommandList *cm, int argc, char **argv, char *args)
+void c_since(CommandList *cm, int argc, const char **argv, char *args)
 {
 	list_users_since(user->lastlogout);
 }
 
-void c_mod(CommandList *cm, int argc, char **argv, char *args)
+void c_mod(CommandList *cm, int argc, const char **argv, char *args)
 {
 	moderate();
 }
 
-void c_passwd(CommandList *cm, int argc, char **argv, char *args)
+void c_passwd(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char pw1[PASSWDSIZE], pw2[PASSWDSIZE], salt[3];
 		
@@ -687,7 +888,7 @@
 	}
 }
 
-void c_resub(CommandList *cm, int argc, char **argv, char *args)
+void c_resub(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (get_subscribe(user,currentfolder)==true)
 		printf(_("You are already subscribed to %s.\n"),fold->name);
@@ -698,7 +899,7 @@
 	}
 }
 
-void c_unsub(CommandList *cm, int argc, char **argv, char *args)
+void c_unsub(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (get_subscribe(user,currentfolder)==false)
 		printf(_("Already Unsubscribed from %s.\n"),fold->name);
@@ -709,26 +910,26 @@
 	}
 }
 
-void c_read(CommandList *cm, int argc, char **argv, char *args)
+void c_read(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int num=atoi(argv[1]);
 
 	if (read_msg(currentfolder,num,user)) last_mesg=num;
 }
 
-void c_prev(CommandList *cm, int argc, char **argv, char *args)
+void c_prev(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (last_mesg<=fold->first) printf(_("You are already at the beginning of the folder.\n"));
 	else if (read_msg(currentfolder,last_mesg-1,user)) last_mesg--;
 }
 
-void c_next(CommandList *cm, int argc, char **argv, char *args)
+void c_next(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (last_mesg>=fold->last) printf(_("You are already at the end of this folder.\n"));
 	else if (read_msg(currentfolder,last_mesg+1,user)) last_mesg++;
 }
 
-void c_status(CommandList *cm, int argc, char **argv, char *args)
+void c_status(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char stats[10],gr[10], specials[20];
 	int protPower;
@@ -801,19 +1002,19 @@
 	printf("\n");
 }
 
-void c_credits(CommandList *cm, int argc, char **argv, char *args)
+void c_credits(CommandList *cm, int argc, const char **argv, char *args)
 {
 	credits();
 }
 
-void c_write(CommandList *cm, int argc, char **argv, char *args)
+void c_write(CommandList *cm, int argc, const char **argv, char *args)
 {
 	busy++;
 	add_msg(currentfolder,user,0);
 	busy--;
 }
 
-void c_reply(CommandList *cm, int argc, char **argv, char *args)
+void c_reply(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (last_mesg==0)
 		printf(_("You have to read a message before you can reply to it.\n"));
@@ -826,7 +1027,7 @@
 	}
 }
 
-void c_catchup(CommandList *cm, int argc, char **argv, char *args)
+void c_catchup(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int i,n;
 	struct folder f;
@@ -879,19 +1080,19 @@
 	get_folder_number(fold,currentfolder);	
 }
 
-void c_date(CommandList *cm, int argc, char **argv, char *args)
+void c_date(CommandList *cm, int argc, const char **argv, char *args)
 {
 	long tm;
 	tm=time(0);
 	printf(_("Current time and date is %s"),ctime(&tm));
 }
 
-void c_quit(CommandList *cm, int argc, char **argv, char *args)
+void c_quit(CommandList *cm, int argc, const char **argv, char *args)
 {
 	close_down(0, NULL, NULL);
 }
 
-void c_save(CommandList *cm, int argc, char **argv, char *args)
+void c_save(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int msg=atoi(argv[1]);
 	char buff[128],file[128];
@@ -942,7 +1143,7 @@
 	}
 }	
 
-void c_timeout(CommandList *cm, int argc, char **argv, char *args)
+void c_timeout(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z;
 	int units=1;
@@ -990,7 +1191,7 @@
 	reset_timeout(user->timeout);
 }
 
-void c_timestamp(CommandList *cm, int argc, char **argv, char *args)
+void c_timestamp(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -1015,7 +1216,7 @@
 	update_user(user,userposn);
 }
 
-void c_postinfo(CommandList *cm, int argc, char **argv, char *args)
+void c_postinfo(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -1040,7 +1241,7 @@
 	update_user(user,userposn);
 }
 
-void c_changeinfo(CommandList *cm, int argc, char **argv, char *args)
+void c_changeinfo(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -1065,7 +1266,7 @@
 	update_user(user,userposn);
 }
 
-void c_chatmode(CommandList *cm, int argc, char **argv, char *args)
+void c_chatmode(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (!cm_flags(user->chatmode,CM_ONCHAT,CM_MODE_ANY))
 		t_chaton();
@@ -1074,7 +1275,7 @@
 	update_user(user,userposn);
 }
 
-void c_contact(CommandList *cm, int argc, char **argv, char *args)
+void c_contact(CommandList *cm, int argc, const char **argv, char *args)
 {
 	/* user is allowed to change their contact address */
 	if (!s_fixedcontact(user->special))
@@ -1090,7 +1291,7 @@
 	}
 }
 
-void c_alias(CommandList *cm, int argc, char **argv, char *args)
+void c_alias(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (AddLink(&alias_list, argv[1], argv[2]))
 		printf(_("Alias '%s' already exists. Has now been redefined!\n"), argv[1]);
@@ -1098,7 +1299,7 @@
 		printf(_("Alias '%s' added!\n"), argv[1]);
 }
 
-void c_unalias(CommandList *cm, int argc, char **argv, char *args)
+void c_unalias(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (!strcasecmp("*", argv[1]))
 	{
@@ -1114,7 +1315,7 @@
 	}
 }
 
-void c_charset(CommandList *cm, int argc, char **argv, char *args)
+void c_charset(CommandList *cm, int argc, const char **argv, char *args)
 {
     if (argc == 1) {
 	/* XXX: gettextify this */
@@ -1125,7 +1326,7 @@
     }
 }
 
-void c_locale(CommandList *cm, int argc, char **argv, char *args)
+void c_locale(CommandList *cm, int argc, const char **argv, char *args)
 {
     if (argc == 1) {
 	/* XXX: gettextify this */

Modified: trunk/src/perms.c
===================================================================
--- trunk/src/perms.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/perms.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -83,7 +83,7 @@
 	return(false);
 }
 
-char user_stats(char *string, char ustat)
+char user_stats(const char *string, char ustat)
 {
 	int mode=0;
 	int i;
@@ -156,7 +156,7 @@
 	return(p);
 }
 
-char folder_groups(char *string, char st)
+char folder_groups(const char *string, char st)
 {
 	int mode=0;
 	int i;
@@ -227,7 +227,7 @@
 
 extern struct person *user;
 
-void mwlog(char *fmt, ...)
+void mwlog(const char *fmt, ...)
 {
 	va_list ap;
 	int file;

Modified: trunk/src/perms.h
===================================================================
--- trunk/src/perms.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/perms.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -4,9 +4,9 @@
 #include "folders.h"
 #include "user.h"
 
-void mwlog(char *fmt, ...);
+void mwlog(const char *fmt, ...) __attribute__((format(printf,1,2)));
 
-char user_stats(char *string, char stat);
+char user_stats(const char *string, char stat);
 char mesg_stats(char *string, char stat);
 
 void show_user_stats(unsigned char stat, char *tmp, int flag);
@@ -21,7 +21,7 @@
 int is_moderated(struct folder *fol, struct person *usr);
 
 char folder_stats(char *string, char stat);
-char folder_groups(char *string, char stat);
+char folder_groups(const char *string, char stat);
 
 void set_subscribe(struct person *user,int folder,int status);
 int get_subscribe(struct person *user, int folder);

Deleted: trunk/src/scrcomplete.h
===================================================================
--- trunk/src/scrcomplete.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/scrcomplete.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -1,23 +0,0 @@
-#ifndef SCRCOMPLETE_H
-#define SCRCOMPLETE_H
-
-#include <stddef.h>
-#include "main.h"
-#include "talker_privs.h"
-#include "script.h"
-#include "alias.h"
-
-FuncNames scrtc[]={
-{"talkname"	,part_who_talk},
-{"whoname"	,part_who},
-{"username"	,part_user},
-{"gag"		,part_gag_filter},
-{"bind"		,list_bind},
-{"boardexec"	,list_commands},
-{"exec"		,list_chat_commands},
-{"script"	,list_script},
-{"null"		,NULL},
-{NULL		,NULL}
-};
-
-#endif /* SCRCOMPLETE_H */

Modified: trunk/src/script.c
===================================================================
--- trunk/src/script.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/script.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -23,7 +23,7 @@
 #include "user.h"
 #include "alias.h"
 #include "script_inst.h"
-#include "scrcomplete.h"
+#include "main.h"
 #include "Parse.h"
 #include "frl.h"
 #include "js.h"
@@ -43,7 +43,7 @@
 extern int current_rights;
 
 struct function *function_list=NULL;
-extern char *autoexec_arg;
+extern const char *autoexec_arg;
 var_list_t var_list;
 var_list_t *local_vars=NULL;
 CompStack *comparison_stack=NULL;
@@ -81,7 +81,7 @@
 	VAR_NEWLIST(&var_list);
 }
 
-char ** makeargs(int argc, char **argv, int offset)
+char ** makeargs(int argc, const char **argv, int offset)
 {
 	int num;
 	char **new;
@@ -106,7 +106,7 @@
 	return ( strdup(buff) );
 }
 
-static int endchar(char *haystack, char needle)
+static int endchar(const char *haystack, char needle)
 {
 	int len;
 	len=strlen(haystack);
@@ -146,18 +146,31 @@
 	}
 }
 
+FuncNames scrtc[]={
+{"talkname"	,part_who_talk},
+{"whoname"	,part_who},
+{"username"	,part_user},
+{"gag"		,part_gag_filter},
+{"bind"		,list_bind},
+{"boardexec"	,list_commands},
+{"exec"		,list_chat_commands},
+{"script"	,list_script},
+{"null"		,NULL},
+{NULL		,NULL}
+};
+
 void LoadFunction(char *funcname, char *header, FILE *file, int *lineno, const char *filename, int flags)
 {
 	struct function *new;
 	char *buff = NULL;
 	char *line = NULL;
-	char *bits[MAX_ARGC];
+	const char *bits[MAX_ARGC];
 	int num;
 	struct label *label=NULL;
 	struct code *codeend=NULL, *newcode;
 	Instruction *inst;
 	/* new vars for tab-completion */
-	char *argv[MAX_ARGC];
+	const char *argv[MAX_ARGC];
 	int argc;
 	int lp;
 	FuncNames *fn = NULL;
@@ -377,7 +390,7 @@
 	}
 }
 
-void DestroyFunction(char *funcname)
+void DestroyFunction(const char *funcname)
 {
 	struct function *func, *funcold;
 	struct code *fcode;
@@ -475,7 +488,7 @@
  *** HELP
  ***************/
 
-void scr_helpfile(char *args)
+void scr_helpfile(const char *args)
 {
 	char *x;
 	Instruction *inst;
@@ -547,7 +560,7 @@
 	}
 }
 
-void ListVars(char *srch)
+void ListVars(const char *srch)
 {
 	var_op_t op;
 	int count=0;
@@ -605,7 +618,7 @@
 
 int ExecInst(char *line)
 {
-	char *bits[MAX_ARGC];
+	const char *bits[MAX_ARGC];
 	int num;
 	Instruction *inst;
 	struct code *pc;
@@ -653,7 +666,7 @@
 
 void DoScript(char *line)
 {
-	char *bits[MAX_ARGC];
+	const char *bits[MAX_ARGC];
 	var_list_t args;
 	int num;
 	int i;
@@ -733,7 +746,7 @@
 	}
 }
 
-int ExecScript(char *name, var_list_t *vars, int bound)
+int ExecScript(const char *name, var_list_t *vars, int bound)
 {
 	struct function *script;
 	struct code *pc;
@@ -820,13 +833,13 @@
 	return(0);
 }
 
-int ExecEvent(char *script, char *text, char *event, char *who, int pre)
+int ExecEvent(char *script, const char *text, const char *event, char *who, int pre)
 {
 	int retval;
 	var_list_t args;
 
 	if (is_js(script)) {
-		char *argv[4];
+		const char *argv[4];
 		argv[0]=event;
 		argv[1]=who;
 		argv[2]=text;
@@ -871,13 +884,13 @@
 }	
 
 
-int ExecEvent2(char *script, char *event, char *who, int pre, int numargs, char *aargs[])
+int ExecEvent2(char *script, const char *event, char *who, int pre, int numargs, char *aargs[])
 {
 	var_list_t	args;
 	int		retval, i;
 
 	if (is_js(script)) {
-		char **argv;
+		const char **argv;
 		argv = calloc(numargs+2,sizeof(char *));
 		argv[0]=event;
 		argv[1]=who;
@@ -929,7 +942,7 @@
 	return(retval);
 }	
 
-void ListScript(char *name)
+void ListScript(const char *name)
 {
 	struct function *ptr;
 	int i;
@@ -1053,7 +1066,7 @@
 	if (homedir) free (homedir);
 }
 
-void scr_devel_msg(struct code *pc, char *fmt, ...) 
+void scr_devel_msg(struct code *pc, const char *fmt, ...) 
 {
 	va_list va;
 	char text[MAXTEXTLENGTH];

Modified: trunk/src/script.h
===================================================================
--- trunk/src/script.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/script.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -20,10 +20,10 @@
 struct function;
 
 typedef struct __inst {
-	char *name;
+	const char *name;
 	unsigned int Rights;
 	int args;
-	char *help;
+	const char *help;
 	void (*Function)(struct code *, int, char **);
 	int usage_count;
 } Instruction;
@@ -35,8 +35,8 @@
 } CompStack;
 
 typedef struct __name2func {
-	char *name;				/* name of function    */
-	char *(*function)(const char *, int);   /* associated function */
+	const char *name;                     /* name of function    */
+	char *(*function)(const char *, int); /* associated function */
 } FuncNames;
 
 /* switch for list/hash-based variable lists */
@@ -99,9 +99,9 @@
 #define VAR_STR_FORCE(list1, name1, val1) \
 do { \
 	var_op_t _op_6; \
-	char *_name_6 = (name1); \
+	const char *_name_6 = (name1); \
 	var_list_t *_list_6 = (list1); \
-	char *_val_6 = (val1); \
+	const char *_val_6 = (val1); \
 	VAR_OP_INIT(&_op_6, _list_6); \
 	VAR_SEARCH(&_op_6, _name_6); \
 	if (VAR_FOUND(&_op_6)) \
@@ -120,7 +120,7 @@
 	var_op_t _op_6; \
 	char _name_6[5]; \
 	var_list_t *_list_6 = (list1); \
-	char *_val_6 = (val1); \
+	const char *_val_6 = (val1); \
 	snprintf(_name_6, 4, "%d", (name1)); \
 	VAR_OP_INIT(&_op_6, _list_6); \
 	VAR_SEARCH(&_op_6, _name_6); \
@@ -152,7 +152,7 @@
 #define VAR_INT_FORCE(list1, name1, val1) \
 do { \
 	var_op_t _op_6; \
-	char *_name_6 = (name1); \
+	const char *_name_6 = (name1); \
 	var_list_t *_list_6 = (list1); \
 	int _val_6 = (val1); \
 	VAR_OP_INIT(&_op_6, _list_6); \
@@ -235,11 +235,11 @@
 extern char *event_user;
 
 char *eval_arg(char *arg, int argc, char **argv);
-char ** makeargs(int argc, char **argv, int offset);
+char ** makeargs(int argc, const char **argv, int offset);
 char ** argv_shift(int argc, char **argv, int offset, int *newsize);
 void CallFunction(struct code *code, int argc, char **argv);
 int ExecInst(char *line);
-void scr_devel_msg(struct code *pc, char *fmt, ...);
+void scr_devel_msg(struct code *pc, const char *fmt, ...) __attribute__((format(printf,2,3)));
 void RunInitFuncs(int talkinit);
 extern void LoadFunction(char *, char *, FILE *, int *, const char *, int);
 
@@ -256,20 +256,20 @@
 void var_key_dup(var_op_t *op);
 
 extern void DoScript(char *line);
-int ExecScript(char *name, var_list_t *args, int bound);
-int ExecEvent(char *script, char *text, char *event, char *who, int pre);
-int ExecEvent2(char *script, char *event, char *who, int pre, int numargs, char *aargs[]);
+int ExecScript(const char *name, var_list_t *args, int bound);
+int ExecEvent(char *script, const char *text, const char *event, char *who, int pre);
+int ExecEvent2(char *script, const char *event, char *who, int pre, int numargs, char *aargs[]);
 
-void ListScript(char *name);
-void ListVars(char *search);
+void ListScript(const char *name);
+void ListVars(const char *srch);
 void ScriptCleanup(void);
 void DestroyAllFunctions(int debug);
-void DestroyFunction(char *funcname);
+void DestroyFunction(const char *funcname);
 void DestroyVariables(int debug);
 
 void script_init(void);
 
-void scr_helpfile(char *args);
+void scr_helpfile(const char *args);
 void scr_helplist(void);
 
 #endif /* SCRIPT_H */

Modified: trunk/src/script_inst.c
===================================================================
--- trunk/src/script_inst.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/script_inst.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -728,7 +728,7 @@
 	free(what);
 }
 
-int isanum(char *a, int *result, int onlydecimal)
+int isanum(const char *a, int *result, int onlydecimal)
 {
 	char *end;
 	if (a==NULL || strlen(a)<1) return(0);
@@ -756,7 +756,7 @@
 	}
 }
 
-int isanumul(char *a, unsigned long *result, int onlydecimal)
+int isanumul(const char *a, unsigned long *result, int onlydecimal)
 {
 	char *end;
 	if (a==NULL || strlen(a)<1) return(0);
@@ -1111,7 +1111,7 @@
 		string_add(&out, cc);
 	}
 
-	VAR_STR_UPDATE(&var, strdup(out));
+	VAR_STR_UPDATE(&var, out);
 
 	if (script_debug) escprintf("- %s: '%d' x '%s' --> '%s'\n", pc->inst->name, i, cc, var_str_val(&var));
 
@@ -1146,8 +1146,8 @@
 	if (!strcmp(aa, "")) {
 		if (script_debug) printf("- Source string to %s empty, returning blank head and tail.\n", pc->inst->name);
 		free(aa);
-		VAR_STR_UPDATE(&var1, strdup(""));
-		VAR_STR_UPDATE(&var2, strdup(""));
+		VAR_STR_UPDATE(&var1, "");
+		VAR_STR_UPDATE(&var2, "");
 		return;
 	}
 
@@ -1159,25 +1159,24 @@
 	/* if all spaces at start of string, then return the spaces as head, and tail as nothing */
 	if (cc == NULL)
 	{
-		VAR_STR_UPDATE(&var1, strdup(aa));
-		VAR_STR_UPDATE(&var2, strdup(""));
+		VAR_STR_UPDATE(&var1, aa);
+		VAR_STR_UPDATE(&var2, "");
 	}
 	/* if there were spaces at the front of the string, ignore them, and split about next space */
 	else
 	{
 		if ((bb = strchr(cc, ' ')) == NULL)
 		{
-			VAR_STR_UPDATE(&var1, strdup(cc));
-			VAR_STR_UPDATE(&var2, strdup(""));
+			VAR_STR_UPDATE(&var1, cc);
+			VAR_STR_UPDATE(&var2, "");
 		}
 		else
 		{
-			char *dd;
-
-			dd = bb;
-			VAR_STR_UPDATE(&var2, strdup(++dd));
+			char *dd = bb;
+			dd++;
+			VAR_STR_UPDATE(&var2, dd);
 			*bb=0;
-			VAR_STR_UPDATE(&var1, strdup(cc));
+			VAR_STR_UPDATE(&var1, cc);
 		}
 	}
 
@@ -1212,6 +1211,7 @@
 		strcpy(new, var_str_val(&var));
 		strcat(new, b);
 		VAR_STR_UPDATE(&var, new);
+		free(new);
 		free(b);
 	} else
 	{
@@ -1264,7 +1264,7 @@
 
 	if (VAR_FOUND(&var)) {
 		if (script_debug) escprintf("- set: updating var $%s (%s) to '%s'\n", what, var_str_val(&var), text);
-		VAR_STR_UPDATE(&var, strdup(text));
+		VAR_STR_UPDATE(&var, text);
 	} else {
 		VAR_STR_CREATE(&var, strdup(text));
 		if (script_debug) escprintf("- set: creating var $%s setting to '%s'\n", what, text);
@@ -1318,7 +1318,7 @@
 
 	if (VAR_FOUND(&var)) {
 		if (script_debug) escprintf("- set: updating var $%s (%s) to '%s'\n", what, var_str_val(&var), value);
-		VAR_STR_UPDATE(&var, strdup(value));
+		VAR_STR_UPDATE(&var, value);
 	} else {
 		VAR_STR_CREATE(&var, strdup(value));
 		if (script_debug) escprintf("- set: creating var $%s setting to '%s'\n", what, value);
@@ -1868,6 +1868,7 @@
 					strcat(stringy, a);
 					strcat(stringy, &(old_str[pmatch[0].rm_eo]));
 					VAR_STR_UPDATE(&var, stringy);
+					free(stringy);
 				}
 			}
 			else
@@ -1952,6 +1953,7 @@
 
 			/* update the new string */
 			VAR_STR_UPDATE(&var, oldstring);
+			free(oldstring);
 		}
 	}else
 	{

Modified: trunk/src/script_inst.h
===================================================================
--- trunk/src/script_inst.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/script_inst.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -53,8 +53,8 @@
 void scr_version( struct code *, int, char **);
 void scr_wholist( struct code *, int, char **);
 
-int isanumul(char *a, unsigned long *result, int onlydecimal);
-int isanum(char *a, int *result, int onlydecimal);
+int isanumul(const char *a, unsigned long *result, int onlydecimal);
+int isanum(const char *a, int *result, int onlydecimal);
 
 extern Instruction inst_table[];
 

Modified: trunk/src/server/Makefile
===================================================================
--- trunk/src/server/Makefile	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/server/Makefile	2012-11-18 02:31:42 UTC (rev 1290)
@@ -8,7 +8,7 @@
 HOMEPATH := $(libdir)/mw
 
 # cflags for standard 'cc' compiler
-CFLAGS= -Wall -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wno-strict-aliasing -pedantic --std=gnu99 -D_GNU_SOURCE -I.. -I/usr/include/postgresql
+CFLAGS= -Wall -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wwrite-strings -Wno-strict-aliasing -pedantic --std=gnu99 -D_GNU_SOURCE -I.. -I/usr/include/postgresql
 #LDFLAGS+= -pie
 
 # info strings, do not edit.

Modified: trunk/src/socket.c
===================================================================
--- trunk/src/socket.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/socket.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -12,7 +12,7 @@
 #include "socket.h"
 
 /* generate FOURCC code from a string */
-inline unsigned int FOURCC(char *a)
+inline unsigned int FOURCC(const char *a)
 {
 	return ((a[3]<<24)|(a[2]<<16)|(a[1]<<8)|a[0]);
 }

Modified: trunk/src/socket.h
===================================================================
--- trunk/src/socket.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/socket.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -48,7 +48,7 @@
 
 #define _MIN(a,b) (a<b)?a:b
 
-unsigned int FOURCC(char *a);
+unsigned int FOURCC(const char *a);
 /* socket.c */
 ipc_message_t *ipcmsg_create(uint32_t type,uint32_t src);
 void ipcmsg_append(ipc_message_t *msg, const void *data, int len);

Modified: trunk/src/special.c
===================================================================
--- trunk/src/special.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/special.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -28,7 +28,7 @@
 };
 
 /* short = 16 bits */
-unsigned short set_special(char *string, unsigned short st)
+unsigned short set_special(const char *string, unsigned short st)
 {
 	int mode=0;
 	int i;

Modified: trunk/src/special.h
===================================================================
--- trunk/src/special.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/special.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -1,7 +1,7 @@
 #ifndef SPECIAL_H
 #define SPECIAL_H
 
-unsigned short set_special(char *string, unsigned short stat);
+unsigned short set_special(const char *string, unsigned short stat);
 void show_special(unsigned short stat, char *tmp, int flag);
 int s_coventry(unsigned short stat);
 int s_superuser(unsigned short stat);

Modified: trunk/src/sqlite.c
===================================================================
--- trunk/src/sqlite.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/sqlite.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -7,7 +7,7 @@
 #include <sqlite3.h>
 #include "bb.h"
 
-static sqlite3* db_open(char *dbname)
+static sqlite3* db_open(const char *dbname)
 {
 	sqlite3 *db;
 	int error = sqlite3_open(dbname, &db);
@@ -71,8 +71,7 @@
 	return 0;
 }
 
-struct db_result*
-db_query(char *dbname, char *query, int quiet)
+struct db_result *db_query(const char *dbname, const char *query, int quiet)
 {
 	struct db_result *new;
 	int ret;
@@ -363,9 +362,8 @@
 		res = db_query(USERSQL, q, 1);
 		if (res == NULL) {
 			/* it failed, try to create the table */
-			char *create = "CREATE TABLE "USERDB_ROOMS" (room integer, opt text, arg text)";
+			const char *create = "CREATE TABLE "USERDB_ROOMS" (room integer, opt text, arg text)";
 			res = db_query(USERSQL, create, 0);
-			sqlite3_free(create);
 			if (res != NULL) {
 				/* it worked, resubmit the insert */
 				db_free(res);

Modified: trunk/src/sqlite.h
===================================================================
--- trunk/src/sqlite.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/sqlite.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -23,7 +23,7 @@
 	char *error_text;
 };
 
-struct db_result *db_query(char *dbname, char *query, int quiet);
+struct db_result *db_query(const char *dbname, const char *query, int quiet);
 struct js_db_result* js_db_query(char *dbname, char *query);
 void db_free(struct db_result *result);
 void js_db_free(struct js_db_result *result);

Modified: trunk/src/strings.c
===================================================================
--- trunk/src/strings.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/strings.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -240,7 +240,7 @@
 
 /* common file functions */
 
-char *buildpath(char *a, char *b, char *c, char *d)
+char *buildpath(const char *a, const char *b, const char *c, const char *d)
 {
 	static char fullpath[PATHSIZE];
 
@@ -248,7 +248,7 @@
 	return(fullpath);
 }
 
-int err_open(char *path,int type,int mode)
+int err_open(const char *path,int type,int mode)
 {
 	int x;
 	x=open(path,type,mode);
@@ -268,7 +268,7 @@
 	return ((int)fValue);
 }
 
-void string_add(char **str, char *add)
+void string_add(char **str, const char *add)
 {
 	if (add != NULL)
 	{
@@ -346,7 +346,7 @@
     strcpy(in, szOutText);
 }
 
-void escprintf(char *szFormat, ...)
+void escprintf(const char *szFormat, ...)
 {
 	static char	szText[MAXTEXTLENGTH];
 	va_list		vaList;

Modified: trunk/src/strings.h
===================================================================
--- trunk/src/strings.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/strings.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -19,22 +19,22 @@
 void pop_cmd(char *string, int len, int *type);
 int pop_stack(char *string, int len);
 int get_rand(int min, int max);
-void string_add(char **str, char *add);
+void string_add(char **str, const char *add);
 int allspace(char *s);
 void strlower(char *szString);
 int stringcmp(const char *a, const char *b, int n);
 
-void escprintf(char *szFormat, ...);
+void escprintf(const char *szFormat, ...) __attribute__((format(printf,1,2)));
 char *strip_colours(const char *text);
 void strip_str(char *string);
 void get_str(char *string, int size);
 void strip_quote(char *a);
 char *quotetext(const char *a);
 
-char *buildpath(char *a, char *b, char *c, char *d);
+char *buildpath(const char *a, const char *b, const char *c, const char *d);
 #define makepath(a,b,c) (buildpath(HOMEPATH,a,b,c))
 
-int err_open(char *path,int type,int mode);
+int err_open(const char *path,int type,int mode);
 int getachar(void);
 void read2cr(void);
 

Modified: trunk/src/talker.c
===================================================================
--- trunk/src/talker.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/talker.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -207,7 +207,7 @@
 }
 
 
-int ison(char * uname)
+int ison(const char * uname)
 {
     /*
      * Ask the IPC mechanism if a user is there
@@ -269,26 +269,18 @@
 	return (nCols);
 }
 
-void t_help(CommandList *cm, int argc, char **argv, char *args)
+void t_who(CommandList *cm, int argc, const char **argv, char *args)
 {
-	if (argc > 1)
-		talk_help(argv[1]);
-	else
-		help_list(chattable, 1);
-}
-
-void t_who(CommandList *cm, int argc, char **argv, char *args)
-{
 	who_list(0);
 }
 
-void t_what(CommandList *cm, int argc, char **argv, char *args)
+void t_what(CommandList *cm, int argc, const const char **argv, char *args)
 {
 	who_list(1);
 }
 
 
-void t_quit(CommandList *cm, int argc, char **argv, char *args)
+void t_quit(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 	user->chatmode=cm_flags(user->chatmode, CM_ONCHAT, CM_MODE_CLEAR);
@@ -302,17 +294,17 @@
 	set_rights();
 }
 
-void t_script(CommandList *cm, int argc, char **argv, char *args)
+void t_script(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc<2) ListScript(NULL); else ListScript(argv[1]);
 }
 
-void t_showvars(CommandList *cm, int argc, char **argv, char *args)
+void t_showvars(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc<2) ListVars(NULL); else ListVars(argv[1]);
 }
 
-void t_event(CommandList *cm, int argc, char **argv, char *args)
+void t_event(CommandList *cm, int argc, const char **argv, char *args)
 {
 	/* no arguments */
 	if (argc < 2)  
@@ -337,7 +329,7 @@
 		printf("Event '%s' added!\n", argv[1]);
 }
  
-void t_unevent(CommandList *cm, int argc, char **argv, char *args)
+void t_unevent(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (!strcasecmp("*", argv[1]))
 	{
@@ -353,7 +345,7 @@
 	}
 }
 
-void t_runaway(CommandList *cm, int argc, char **argv, char *args)
+void t_runaway(CommandList *cm, int argc, const char **argv, char *args)
 {
 	extern unsigned long run_away;
 	unsigned long num = 0;
@@ -402,7 +394,7 @@
 	}
 }
 
-void t_flood(CommandList *cm, int argc, char **argv, char *args)
+void t_flood(CommandList *cm, int argc, const char **argv, char *args)
 {
 	extern int flood_limit;
 	int num = 0;
@@ -414,7 +406,7 @@
 	}
 }
 
-void t_load(CommandList *cm, int argc, char **argv, char *args)
+void t_load(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc<2)
 	{
@@ -430,7 +422,7 @@
 	RunInitFuncs(1);
 }
 
-void t_destroy(CommandList *cm, int argc, char **argv, char *args)
+void t_destroy(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc<2)
 	{
@@ -441,7 +433,7 @@
 	if (!strcmp(argv[1],"*")) DestroyAllFunctions(1); else DestroyFunction(argv[1]);
 }
 
-void t_mwrc(CommandList *cm, int argc, char **argv, char *args)
+void t_mwrc(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc < 2) {
 	        char * old = userdb_get(USERDB_PRIVATE, user->name, "mwrc");
@@ -459,7 +451,7 @@
 	}
 }
 
-void t_restart(CommandList *cm, int argc, char **argv, char *args)
+void t_restart(CommandList *cm, int argc, const char **argv, char *args)
 {
 	extern var_list_t	var_list;
 
@@ -492,7 +484,7 @@
 	RunInitFuncs(1);
 }
 
-void t_shout(CommandList *cm, int argc, char **argv, char *args)
+void t_shout(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -502,17 +494,50 @@
 	talk_send_shout(text);
 }
 
-void t_whisper(CommandList *cm, int argc, char **argv, char *args)
+void t_whisper(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
+	char buff[MAXTEXTLENGTH];
+	struct person u;
+	struct who w;
+	int ufile,wfile;
+	int count=0;
 
-	text[0]=0;
-	strncat(text, args, MAXTEXTLENGTH - strlen(text) - 1);
+	strncpy(text, args, MAXTEXTLENGTH - 1);
+	text[MAXTEXTLENGTH - 1] = '\0';
 	apply_gag(text);
-	talk_single(argv[1],text);
+	wfile=openwhofile(O_RDONLY);
+	ufile=openuserfile(O_RDONLY);
+
+	snprintf(buff, MAXTEXTLENGTH, "%s whispers: %s", user->name, text);	
+
+	while (read(wfile,&w,sizeof(w)))
+	{
+		/* Skip invalid entries */
+		if (w.posn < 0)
+			continue;
+
+		lseek(ufile,w.posn,0);
+		read(ufile,&u,sizeof(u));
+
+		if (cm_flags(u.chatmode,CM_ONCHAT,CM_MODE_ALL) && !strcasecmp(argv[1], u.name) )
+			if (! ipc_send_to_pid(w.pid, IPC_TEXT, buff)) count++;
+	}
+
+	if (count==0)
+	{
+		printf("User '%s' is not logged on.\n", argv[1]);
+	}else
+	{
+		mwlog("WHISPER %s %s", argv[1], text);
+	}
+
+	close(ufile);
+	close(wfile);
 }
 
-void t_sayto(CommandList *cm, int argc, char **argv, char *args)
+
+void t_sayto(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -521,13 +546,13 @@
 	chat_sayto(argv[1],text,0);
 }
 
-void t_sayto_warn(CommandList *cm, int argc, char **argv, char *args)
+void t_sayto_warn(CommandList *cm, int argc, const char **argv, char *args)
 {
 	display_message("*** .say as an alias for .sayto is deprecated.  Please use .sa instead.", 1, 1);
 	t_sayto(cm, argc, argv, args);
 }
 
-void t_notsayto(CommandList *cm, int argc, char **argv, char *args)
+void t_notsayto(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -541,7 +566,7 @@
 	chat_sayto(argv[1],text,1);
 }
 
-void t_ventril(CommandList *cm, int argc, char **argv, char *args)
+void t_ventril(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 	int i;
@@ -567,7 +592,7 @@
 	}
 }
 
-void t_ventril_raw(CommandList *cm, int argc, char **argv, char *args)
+void t_ventril_raw(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 	int i;
@@ -593,7 +618,7 @@
 	}
 }
 
-void t_emote(CommandList *cm, int argc, char **argv, char *args)
+void t_emote(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -604,7 +629,7 @@
 	talk_send_emote(text,user->room,0);	
 }
 
-void t_emotes(CommandList *cm, int argc, char **argv, char *args)
+void t_emotes(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -615,7 +640,7 @@
 	talk_send_emote(text,user->room,1);	
 }
 
-void t_emotes2(CommandList *cm, int argc, char **argv, char *args)
+void t_emotes2(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -626,7 +651,7 @@
 	talk_send_emote(text,user->room,2);	
 }
 
-void t_emoted(CommandList *cm, int argc, char **argv, char *args)
+void t_emoted(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -637,7 +662,7 @@
 	talk_send_emote(text,user->room,3);	
 }
 
-void t_emotell(CommandList *cm, int argc, char **argv, char *args)
+void t_emotell(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -648,7 +673,7 @@
 	talk_send_emote(text,user->room,4);	
 }
 
-void t_global(CommandList *cm, int argc, char **argv, char *args)
+void t_global(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	unsigned long global=cm_flags(user->chatmode,CM_GLOBAL,CM_MODE_ALL);
@@ -675,7 +700,7 @@
 	update_user(user,userposn);
 }
 
-void t_sticky(CommandList *cm, int argc, char **argv, char *args)
+void t_sticky(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	unsigned long sticky=cm_flags(user->chatmode,CM_STICKY,CM_MODE_ALL);
@@ -702,7 +727,7 @@
 	update_user(user,userposn);
 }
 
-void t_tcunames(CommandList *cm, int argc, char **argv, char *args)
+void t_tcunames(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -728,7 +753,7 @@
 }
 
 /* SCRIPT HELP function */
-void t_scrhelp(CommandList *cm, int argc, char **argv, char *args)
+void t_scrhelp(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (argc>1)
 		scr_helpfile(argv[1]);
@@ -736,7 +761,7 @@
 		scr_helplist();
 }
 
-void t_debug(CommandList *cm, int argc, char **argv, char *args)
+void t_debug(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	extern int script_debug;
@@ -763,7 +788,7 @@
 	update_user(user,userposn);
 }
 
-void t_spy(CommandList *cm, int argc, char **argv, char *args)
+void t_spy(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	unsigned long global=cm_flags(user->chatmode,CM_SPY,CM_MODE_ALL);
@@ -791,7 +816,7 @@
 	update_user(user,userposn);
 }
 
-void t_protect(CommandList *cm, int argc, char **argv, char *args)
+void t_protect(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 	int myapl = (user->chatprivs & CP_PROTMASK) >> CP_PROTSHIFT;
@@ -858,7 +883,7 @@
 	talk_send_raw(text,user->room);
 }
 
-void t_unprotect(CommandList *cm, int argc, char **argv, char *args)
+void t_unprotect(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -871,7 +896,7 @@
 	talk_send_raw(text,user->room);
 }
 
-void t_summon(CommandList *cm, int argc, char **argv, char *args)
+void t_summon(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char		text[MAXTEXTLENGTH];
 	int		newroom;
@@ -907,7 +932,7 @@
 	}
 }
 
-void t_freeze(CommandList *cm, int argc, char **argv, char *args)
+void t_freeze(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -917,7 +942,7 @@
 	talk_send_raw(text,user->room);
 }
 
-void t_unfreeze(CommandList *cm, int argc, char **argv, char *args)
+void t_unfreeze(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -927,7 +952,7 @@
 	talk_send_raw(text,user->room);
 }
 
-void t_gag(CommandList *cm, int argc, char **argv, char *args)
+void t_gag(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 	char num[5];
@@ -961,7 +986,7 @@
 	}
 }
 
-void t_ungag(CommandList *cm, int argc, char **argv, char *args)
+void t_ungag(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 	int32_t gpos;
@@ -984,7 +1009,7 @@
 	talk_send_raw(text,user->room);
 }
 
-void t_ignorelist(CommandList *cm, int argc, char **argv, char *args)
+void t_ignorelist(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int linecount = 1;
 	int screen_height = screen_h();
@@ -1019,7 +1044,7 @@
 	}
 }
  
-void t_ignore(CommandList *cm, int argc, char **argv, char *args)
+void t_ignore(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char			text[MAXTEXTLENGTH];
 	struct IgnoreList	*newnode;
@@ -1124,10 +1149,10 @@
 	talk_send_raw(text,user->room);
 }
  
-void t_unignore(CommandList *cm, int argc, char **argv, char *args)
+void t_unignore(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char    text[MAXTEXTLENGTH];
-	char	*namebuff[MAX_ARGC];
+	const char *namebuff[MAX_ARGC];
 	int	namecount;
 	int	argloop;
 
@@ -1194,7 +1219,7 @@
 	talk_send_raw(text, user->room);
 }
 
-void t_zod(CommandList *cm, int argc, char **argv, char *args)
+void t_zod(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char buff[MAXTEXTLENGTH];
 	snprintf(buff,MAXTEXTLENGTH-1,"z");
@@ -1216,7 +1241,7 @@
 	ipc_send_to_username(argv[1], IPC_KICK, buff);
 }
 
-void t_mrod(CommandList *cm, int argc, char **argv, char *args)
+void t_mrod(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char buff[MAXTEXTLENGTH];
 	snprintf(buff,MAXTEXTLENGTH-1,"m");
@@ -1238,7 +1263,7 @@
 	ipc_send_to_username(argv[1], IPC_KICK ,buff);
 }
 
-void t_kick(CommandList *cm, int argc, char **argv, char *args)
+void t_kick(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char buff[MAXTEXTLENGTH];
 	snprintf(buff,MAXTEXTLENGTH-1,"k");
@@ -1260,7 +1285,7 @@
 	ipc_send_to_username(argv[1], IPC_KICK, buff);
 }
 
-void t_remove(CommandList *cm, int argc, char **argv, char *args)
+void t_remove(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char buff[MAXTEXTLENGTH];
 	snprintf(buff,MAXTEXTLENGTH-1,"r");
@@ -1282,7 +1307,7 @@
 	ipc_send_to_username(argv[1], IPC_KICK, buff);
 }
 
-void t_raw(CommandList *cm, int argc, char **argv, char *args)
+void t_raw(CommandList *cm, int argc, const char **argv, char *args)
 {
 	char text[MAXTEXTLENGTH];
 
@@ -1292,7 +1317,7 @@
 	talk_send_raw(text,user->room);
 }
 
-void t_bind(CommandList *cm, int argc, char **argv, char *args)
+void t_bind(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (AddLink(&bind_list, argv[1], argv[2]))
 		printf("Bind '%s' already exists. Has now been redefined!\n", argv[1]);
@@ -1300,7 +1325,7 @@
 		printf("Bind '%s' added!\n", argv[1]);
 }
 
-void t_unbind(CommandList *cm, int argc, char **argv, char *args)
+void t_unbind(CommandList *cm, int argc, const char **argv, char *args)
 {
 	if (!strcasecmp("*", argv[1]))
 	{
@@ -1316,7 +1341,7 @@
 	}
 }
 
-void t_room(CommandList *cm, int argc, char **argv, char *args)
+void t_room(CommandList *cm, int argc, const char **argv, char *args)
 {
 	switch(ChangeRoom(args, 0))
 	{
@@ -1338,7 +1363,7 @@
 	}	
 }
 
-void t_linewrap(CommandList *cm, int argc, char **argv, char *args)
+void t_linewrap(CommandList *cm, int argc, const char **argv, char *args)
 {
 	int z=BoolOpt(argv[1]);
 	if (z==0)
@@ -1365,7 +1390,7 @@
 	update_user(user,userposn);
 }
 
-void t_topic(CommandList *cm, int argc, char **argv, char *args)
+void t_topic(CommandList *cm, int argc, const char **argv, char *args)
 {
 	AUTOFREE_BUFFER buff=NULL;
 
@@ -1403,7 +1428,7 @@
 	}
 }
 
-void t_uri(CommandList *cm, int argc, char **argv, char *args)
+void t_uri(CommandList *cm, int argc, const char **argv, char *args)
 {
 	uriActionList *al = uritable;
 	int wiz=0, num;
@@ -1487,31 +1512,6 @@
 	talk_send_say(text,user->room);
 }
 
-void chat_sayto(char *to, char *text, int exclude)
-{
-	char buff[MAXTEXTLENGTH];
-
-	buff[0]=0;
-	if (text[strlen(text)-1] == '?')
-	{
-		if (exclude)
-			snprintf(buff,MAXTEXTLENGTH-1,"asks (-%s): ", to);
-		else
-			snprintf(buff,MAXTEXTLENGTH-1,"asks: ");
-	}
-	else
-	{
-		if (exclude)
-			snprintf(buff,MAXTEXTLENGTH-1,"says (-%s): ", to);
-		else
-			snprintf(buff,MAXTEXTLENGTH-1,"says: ");
-	}
-	apply_gag(text);
-	strncat(buff, text, MAXTEXTLENGTH - strlen(buff) - 1);
-
-	talk_sayto(buff, to, user->room, exclude);
-}
-
 void set_talk_rights(void)
 {
 	extern int current_rights;
@@ -1534,7 +1534,7 @@
 	current_rights = RIGHTS_TALK;
 }	
 
-void talk_sayto(char *text, char *to, int channel, int exclude) 
+static void talk_sayto(char *text, const char *to, int channel, int exclude) 
 {
 	char buff[MAXTEXTLENGTH];
 	char gbuff[MAXTEXTLENGTH];
@@ -1604,42 +1604,29 @@
 	close(wfile);
 }
 
-void talk_single(char *to, char *text) 
+void chat_sayto(const char *to, char *text, int exclude)
 {
 	char buff[MAXTEXTLENGTH];
-	struct person u;
-	struct who w;
-	int ufile,wfile;
-	int count=0;
 
-	wfile=openwhofile(O_RDONLY);
-	ufile=openuserfile(O_RDONLY);
-
-	snprintf(buff, MAXTEXTLENGTH, "%s whispers: %s", user->name, text);	
-
-	while (read(wfile,&w,sizeof(w)))
+	buff[0]=0;
+	if (text[strlen(text)-1] == '?')
 	{
-		/* Skip invalid entries */
-		if (w.posn < 0)
-			continue;
-
-		lseek(ufile,w.posn,0);
-		read(ufile,&u,sizeof(u));
-
-		if (cm_flags(u.chatmode,CM_ONCHAT,CM_MODE_ALL) && !strcasecmp(to, u.name) )
-			if (! ipc_send_to_pid(w.pid, IPC_TEXT, buff)) count++;
+		if (exclude)
+			snprintf(buff,MAXTEXTLENGTH-1,"asks (-%s): ", to);
+		else
+			snprintf(buff,MAXTEXTLENGTH-1,"asks: ");
 	}
-
-	if (count==0)
+	else
 	{
-		printf("User '%s' is not logged on.\n",to);
-	}else
-	{
-		mwlog("WHISPER %s %s",to,text);
+		if (exclude)
+			snprintf(buff,MAXTEXTLENGTH-1,"says (-%s): ", to);
+		else
+			snprintf(buff,MAXTEXTLENGTH-1,"says: ");
 	}
+	apply_gag(text);
+	strncat(buff, text, MAXTEXTLENGTH - strlen(buff) - 1);
 
-	close(ufile);
-	close(wfile);
+	talk_sayto(buff, to, user->room, exclude);
 }
 
 void apply_gag(char *text)
@@ -1653,7 +1640,7 @@
 	}
 }
 
-struct IgnoreList *is_ignored(char *name, struct IgnoreList **prev)
+struct IgnoreList *is_ignored(const char *name, struct IgnoreList **prev)
 {
 	struct IgnoreList *tail;
 
@@ -1746,12 +1733,18 @@
 	}
 }
 
-void talk_help(char *args)
+void t_help(CommandList *cm, int argc, const char **argv, char *args)
 {
 	CommandList	*c;
 	char		*x;
 	int		found=false;
 
+	if (argc < 2)
+	{
+		help_list(chattable, 1);
+		return;
+	}
+
 	if (args!=NULL && (strchr(args,'.')!=NULL || strchr(args,'/')!=NULL))
 	{
 		printf("Sorry, no help available on that subject.\n");

Modified: trunk/src/talker.h
===================================================================
--- trunk/src/talker.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/talker.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -4,82 +4,79 @@
 #include "Parse.h"
 
 /* talker.c */
-int ison(char * uname);
+int ison(const char * uname);
 
 /* talker command functions */
-void t_bind(CommandList *cm, int argc, char **argv, char *args);
-void t_unbind(CommandList *cm, int argc, char **argv, char *args);
-void t_scrhelp(CommandList *cm, int argc, char **argv, char *args);
-void t_who(CommandList *cm, int argc, char **argv, char *args);
-void t_what(CommandList *cm, int argc, char **argv, char *args);
-void t_help(CommandList *cm, int argc, char **argv, char *args);
-void t_quit(CommandList *cm, int argc, char **argv, char *args);
-void t_script(CommandList *cm, int argc, char **argv, char *args);
-void t_runaway(CommandList *cm, int argc, char **argv, char *args);
-void t_flood(CommandList *cm, int argc, char **argv, char *args);
-void t_load(CommandList *cm, int argc, char **argv, char *args);
-void t_destroy(CommandList *cm, int argc, char **argv, char *args);
-void t_restart(CommandList *cm, int argc, char **argv, char *args);
-void t_debug(CommandList *cm, int argc, char **argv, char *args);
-void t_shout(CommandList *cm, int argc, char **argv, char *args);
-void t_whisper(CommandList *cm, int argc, char **argv, char *args);
-void t_sayto(CommandList *cm, int argc, char **argv, char *args);
-void t_sayto_warn(CommandList *cm, int argc, char **argv, char *args);
-void t_notsayto(CommandList *cm, int argc, char **argv, char *args);
-void t_emote(CommandList *cm, int argc, char **argv, char *args);
-void t_emotes(CommandList *cm, int argc, char **argv, char *args);
-void t_emotes2(CommandList *cm, int argc, char **argv, char *args);
-void t_emoted(CommandList *cm, int argc, char **argv, char *args);
-void t_emotell(CommandList *cm, int argc, char **argv, char *args);
-void t_event(CommandList *cm, int argc, char **argv, char *args);
-void t_unevent(CommandList *cm, int argc, char **argv, char *args);
-void t_global(CommandList *cm, int argc, char **argv, char *args);
-void t_protect(CommandList *cm, int argc, char **argv, char *args);
-void t_unprotect(CommandList *cm, int argc, char **argv, char *args);
-void t_gag(CommandList *cm, int argc, char **argv, char *args);
-void t_ungag(CommandList *cm, int argc, char **argv, char *args);
-void t_zod(CommandList *cm, int argc, char **argv, char *args);
-void t_mrod(CommandList *cm, int argc, char **argv, char *args);
-void t_kick(CommandList *cm, int argc, char **argv, char *args);
-void t_remove(CommandList *cm, int argc, char **argv, char *args);
-void t_ignore(CommandList *cm, int argc, char **argv, char *args);
-void t_unignore(CommandList *cm, int argc, char **argv, char *args);
-void t_ignorelist(CommandList *cm, int argc, char **argv, char *args);
-void t_raw(CommandList *cm, int argc, char **argv, char *args);
-void t_room(CommandList *cm, int argc, char **argv, char *args);
-void t_ventril(CommandList *cm, int argc, char **argv, char *args);
-void t_ventril_raw(CommandList *cm, int argc, char **argv, char *args);
-void t_freeze(CommandList *cm, int argc, char **argv, char *args);
-void t_unfreeze(CommandList *cm, int argc, char **argv, char *args);
-void t_summon(CommandList *cm, int argc, char **argv, char *args);
-void t_sticky(CommandList *cm, int argc, char **argv, char *args);
-void t_tcunames(CommandList *cm, int argc, char **argv, char *args);
-void t_spy(CommandList *cm, int argc, char **argv, char *args);
-void t_showvars(CommandList *cm, int argc, char **argv, char *args);
-void t_linewrap(CommandList *cm, int argc, char **argv, char *args);
-void t_mwrc(CommandList *cm, int argc, char **argv, char *args);
-void t_uri(CommandList *cm, int argc, char **argv, char *args);
-void t_topic(CommandList *cm, int argc, char **argv, char *args);
+void t_bind(CommandList *cm, int argc, const char **argv, char *args);
+void t_unbind(CommandList *cm, int argc, const char **argv, char *args);
+void t_scrhelp(CommandList *cm, int argc, const char **argv, char *args);
+void t_who(CommandList *cm, int argc, const char **argv, char *args);
+void t_what(CommandList *cm, int argc, const const char **argv, char *args);
+void t_help(CommandList *cm, int argc, const char **argv, char *args);
+void t_quit(CommandList *cm, int argc, const char **argv, char *args);
+void t_script(CommandList *cm, int argc, const char **argv, char *args);
+void t_runaway(CommandList *cm, int argc, const char **argv, char *args);
+void t_flood(CommandList *cm, int argc, const char **argv, char *args);
+void t_load(CommandList *cm, int argc, const char **argv, char *args);
+void t_destroy(CommandList *cm, int argc, const char **argv, char *args);
+void t_restart(CommandList *cm, int argc, const char **argv, char *args);
+void t_debug(CommandList *cm, int argc, const char **argv, char *args);
+void t_shout(CommandList *cm, int argc, const char **argv, char *args);
+void t_whisper(CommandList *cm, int argc, const char **argv, char *args);
+void t_sayto(CommandList *cm, int argc, const char **argv, char *args);
+void t_sayto_warn(CommandList *cm, int argc, const char **argv, char *args);
+void t_notsayto(CommandList *cm, int argc, const char **argv, char *args);
+void t_emote(CommandList *cm, int argc, const char **argv, char *args);
+void t_emotes(CommandList *cm, int argc, const char **argv, char *args);
+void t_emotes2(CommandList *cm, int argc, const char **argv, char *args);
+void t_emoted(CommandList *cm, int argc, const char **argv, char *args);
+void t_emotell(CommandList *cm, int argc, const char **argv, char *args);
+void t_event(CommandList *cm, int argc, const char **argv, char *args);
+void t_unevent(CommandList *cm, int argc, const char **argv, char *args);
+void t_global(CommandList *cm, int argc, const char **argv, char *args);
+void t_protect(CommandList *cm, int argc, const char **argv, char *args);
+void t_unprotect(CommandList *cm, int argc, const char **argv, char *args);
+void t_gag(CommandList *cm, int argc, const char **argv, char *args);
+void t_ungag(CommandList *cm, int argc, const char **argv, char *args);
+void t_zod(CommandList *cm, int argc, const char **argv, char *args);
+void t_mrod(CommandList *cm, int argc, const char **argv, char *args);
+void t_kick(CommandList *cm, int argc, const char **argv, char *args);
+void t_remove(CommandList *cm, int argc, const char **argv, char *args);
+void t_ignore(CommandList *cm, int argc, const char **argv, char *args);
+void t_unignore(CommandList *cm, int argc, const char **argv, char *args);
+void t_ignorelist(CommandList *cm, int argc, const char **argv, char *args);
+void t_raw(CommandList *cm, int argc, const char **argv, char *args);
+void t_room(CommandList *cm, int argc, const char **argv, char *args);
+void t_ventril(CommandList *cm, int argc, const char **argv, char *args);
+void t_ventril_raw(CommandList *cm, int argc, const char **argv, char *args);
+void t_freeze(CommandList *cm, int argc, const char **argv, char *args);
+void t_unfreeze(CommandList *cm, int argc, const char **argv, char *args);
+void t_summon(CommandList *cm, int argc, const char **argv, char *args);
+void t_sticky(CommandList *cm, int argc, const char **argv, char *args);
+void t_tcunames(CommandList *cm, int argc, const char **argv, char *args);
+void t_spy(CommandList *cm, int argc, const char **argv, char *args);
+void t_showvars(CommandList *cm, int argc, const char **argv, char *args);
+void t_linewrap(CommandList *cm, int argc, const char **argv, char *args);
+void t_mwrc(CommandList *cm, int argc, const char **argv, char *args);
+void t_uri(CommandList *cm, int argc, const char **argv, char *args);
+void t_topic(CommandList *cm, int argc, const char **argv, char *args);
 void t_chaton(void);
 
 void chat_say(char *text);
-void chat_sayto(char *to,char *text, int exclude);
+void chat_sayto(const char *to,char *text, int exclude);
 void set_talk_rights(void);
 void talk_send_emote(char * text, int channel, int plural);
 void talk_send_rawbcast(char * text);
 void talk_send_raw(char * text, int channel);
 void talk_send_shout(char * text);
-void talk_single(char *to, char *text);
-void talk_sayto(char *text, char *to, int channel, int exclude);
 void apply_gag(char *text);
 unsigned long cp_flags(unsigned long cm, unsigned long flags, int mode);
 
 void enter_talker(int logontype);
-void talk_help(char *args);
 int screen_h(void);
 int screen_w(void);
 
-struct IgnoreList *is_ignored(char *name, struct IgnoreList **prev);
+struct IgnoreList *is_ignored(const char *name, struct IgnoreList **prev);
 
 void sendipc(char *to, char *text, int broadcast);
 void sendrpc(char *to, char *type, char *text, int broadcast);

Modified: trunk/src/talker_privs.c
===================================================================
--- trunk/src/talker_privs.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/talker_privs.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -198,7 +198,7 @@
 		snprintf(tmp, 4, "?/?");
 }
 
-unsigned long cm_setbycode(unsigned long stat, char *string)
+unsigned long cm_setbycode(unsigned long stat, const char *string)
 {
 	int mode=0;
 	int i;
@@ -229,7 +229,7 @@
 	else return(p);
 }
 
-int gag_code(char *str)
+int gag_code(const char *str)
 {
 	GagInfo *gi = gaglist;
 	int count = 0;
@@ -243,7 +243,7 @@
 	return(0);
 }
 
-char *gag_type(int type)
+const char *gag_type(int type)
 {
 	GagInfo *gi = gaglist;
 	int count = 0;
@@ -257,7 +257,7 @@
 	return("Unknown");
 }
 
-char *ungag_name(unsigned long chatmode)
+const char *ungag_name(unsigned long chatmode)
 {
 	GagInfo *gi;
 
@@ -270,7 +270,7 @@
 	return("Ungag");
 }
 
-static unsigned long gag_flags(char *str)
+static unsigned long gag_flags(const char *str)
 {
 	int i,j, type;
 	unsigned long p=0;
@@ -297,7 +297,7 @@
 	return(p);
 }
 
-int flag_match(unsigned long val, char *filter)
+int flag_match(unsigned long val, const char *filter)
 {
 	unsigned long flags = gag_flags(filter);
 	unsigned long new = val&cm_setbycode(val, "12345678");
@@ -567,7 +567,7 @@
 	tmp[i]=0;
 }
 
-unsigned long cp_setbycode(unsigned long stat, char *string)
+unsigned long cp_setbycode(unsigned long stat, const char *string)
 {
 	int mode=0;
 	int i;

Modified: trunk/src/talker_privs.h
===================================================================
--- trunk/src/talker_privs.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/talker_privs.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -49,8 +49,8 @@
 #define CP_PROTSHIFT	13
 
 unsigned long cm_flags(unsigned long cm, unsigned long flags, int mode);
-unsigned long cm_setbycode(unsigned long stat, char *string);
-unsigned long cp_setbycode(unsigned long stat, char *string);
+unsigned long cm_setbycode(unsigned long stat, const char *string);
+unsigned long cp_setbycode(unsigned long stat, const char *string);
 
 char *display_cpflags(unsigned long cm);
 char *display_cmflags(unsigned long cm);
@@ -59,10 +59,10 @@
 void show_chatprivs(unsigned long cp, char *tmp, int flag);
 void show_protection(unsigned long cm, unsigned long cp, char *tmp, int ourapl);
 
-int gag_code(char *str);
-char *gag_type(int type);
-char *ungag_name(unsigned long chatmode);
-int flag_match(unsigned long val, char *filter);
+int gag_code(const char *str);
+const char *gag_type(int type);
+const char *ungag_name(unsigned long chatmode);
+int flag_match(unsigned long val, const char *filter);
 
 char *part_gag_filter(const char *text, int state);
 unsigned long chatmode_describe(unsigned long old, unsigned long new, int ourapl, int theirapl, const char *from);

Deleted: trunk/src/tidyup.c
===================================================================
--- trunk/src/tidyup.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/tidyup.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -1,151 +0,0 @@
-/*********************************************************
- *     The Milliways III System is copyright 1992        *
- *      J.S.Mitchell. (arthur at sugalaxy.swan.ac.uk)       *
- *       see licence for furthur information.            *
- *********************************************************/
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include "bb.h"
-#include "strings.h"
-#include "files.h"
-#include "tidyup.h"
-
-#define NEW_END	".t"
-
-void tidyup(int argc, char **argv)
-{
-	char fullpath[PATHSIZE];
-	char fullpath2[PATHSIZE];
-	struct Header index;
-	char *textbuff;
-	int textin,textout;
-	int indexin,indexout;
-	int limit;
-	int counter=0;
-
-	int ffile;
-	int i;
-	int first=0xffff;
-	struct folder info;
-	
-	if (argc!=3)
-	{
-	 	printf("Usage: tidyup <foldername> <mesg no>\n");
-	 	return;
-	}
-
-	/* locate the folder that you want to tidy. */
-	if ((ffile=openfolderfile(O_RDWR))<0)
-	{
-		perror("folders");
-		exit(-1);
-	}
-	
-	do {
-		i=read(ffile,&info,sizeof(info));
-	}while (i==sizeof(info) && !stringcmp(info.name,argv[1],-1));
-
-	if (i<sizeof(info))
-	{
-		printf("Folder %s not found.\n",argv[1]);
-		return;
-	}
-
-	/* display relavant info */
-	printf("Folder: %s,  Topic: %s\n",info.name,info.topic);
-	printf("Messages %d to %d\n",info.first,info.last);
-
-	limit=atoi(argv[2]);
-	if (limit<info.first || limit>=info.last)
-	{
-	 	printf("You must leave at least one message, or go and delete the folder.\n");
-	 	return;
-	}
-
-	/* open relevant folder index */
-	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"INDEX_END,info.name);
-	if (access(fullpath,00))
-	{
-		printf("Folder %s not found.\n",info.name);
-		return;
-	}
-	if ((indexin=open(fullpath,O_RDONLY))<0)
-	{
-		perror("tidyup folder_index open");
-		return;
-	}
-	Lock_File(indexin);
-
-	/* open relevant folder text */
-	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"TEXT_END,info.name);
-	if (access(fullpath,00))
-	{
-		printf("Folder %s text file not found.\n",info.name);
-		return;
-	}
-	if ((textin=open(fullpath,O_RDONLY))<0)
-	{
-		perror("tidyup folder_text open");
-		return;
-	}
-	Lock_File(textin);
-
-	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"INDEX_END NEW_END,info.name);
-	if ((indexout=open(fullpath,O_WRONLY|O_CREAT,0600))<0)
-	{
-		perror(fullpath);
-		exit(-1);
-	}
-	Lock_File(indexout);
-
-	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"TEXT_END NEW_END,info.name);
-	if ((textout=open(fullpath,O_WRONLY|O_CREAT,0600))<0)
-	{
-		perror(fullpath);
-		exit(-1);
-	}
-	Lock_File(textout);
-
-	printf("Copying all messages from number %d.\n", limit);
-	while(read(indexin,&index,sizeof(index))>0)
-	{
-		/* if index is the start index or later, copy it */
-		if (index.Ref>=limit && !(index.status&2) && index.Ref <= info.last)
-		{
-			first=index.Ref<first?index.Ref:first;
-			textbuff=(char *)malloc(index.size+1);
-			lseek(textin,index.datafield,0);
-			read(textin,textbuff,index.size);
-			index.datafield=lseek(textout,0,1);
-			write(textout,textbuff,index.size);
-			write(indexout,&index,sizeof(index));
-			free(textbuff);
-			counter++;
-		}
-	}
-	printf("Copy complete, %d messages copied.\n",counter);
-	printf("First message is now #%d\n",first);
-	printf("Updating Real Folder...\n");
-	close(indexout);
-
-	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"INDEX_END,info.name);
-	snprintf(fullpath2,PATHSIZE-1,STATEDIR"/%s"INDEX_END NEW_END,info.name);
-	if (rename(fullpath2,fullpath)) perror("rename");
-	Unlock_File(indexin);
-	close(indexin);
-
-	close(textout);
-	snprintf(fullpath,PATHSIZE-1,STATEDIR"/%s"TEXT_END,info.name);
-	snprintf(fullpath2,PATHSIZE-1,STATEDIR"/%s"TEXT_END NEW_END,info.name);
-	if (rename(fullpath2,fullpath)) perror("rename");
-	Unlock_File(textin);
-	close(textin);
-
-	info.first=first;
-	if ((lseek(ffile,-sizeof(info),SEEK_CUR))<0)
-		perror("seek");
-	write(ffile,&info,sizeof(info));
-	close(ffile);
-}

Deleted: trunk/src/tidyup.h
===================================================================
--- trunk/src/tidyup.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/tidyup.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -1,6 +0,0 @@
-#ifndef TIDYUP_H
-#define TIDYUP_H
-
-void tidyup(int argc, char **argv);
-
-#endif /* TIDYUP_H */

Deleted: trunk/src/topten.c
===================================================================
--- trunk/src/topten.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/topten.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -1,89 +0,0 @@
-/*********************************************************
- *     The Milliways III System is copyright 1992        *
- *      J.S.Mitchell. (arthur at sugalaxy.swan.ac.uk)       *
- *       see licence for furthur information.            *
- *********************************************************/
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include "bb.h"
-#include "sort.h"
-#include "talker.h"
-#include "strings.h"
-#include "topten.h"
-
-void topten(int argc, char **argv)
-{
-	struct listing *head=NULL;
-	char fullpath[PATHSIZE];
-	struct Header hdr;
-	struct listing *new;
-	struct listing *ptr;
-	int file;
-	int count;
-	char buff[10];
-	int screen_height = screen_h();
-
-	if (argc!=2)
-	{
-		printf("Usage: topten <foldername>\n");
-		return;
-	}
-
-	sprintf(fullpath,"%s/%s%s",STATEDIR,argv[1],INDEX_END);
-	if (access(fullpath,00))
-	{
-		printf("Folder %s not found.\n",argv[1]);
-		return;
-	}
-	if ((file=open(fullpath,O_RDONLY))<0)
-	{
-		perror("topten folder open");
-		return;
-	}
-	new=(struct listing *)malloc(sizeof(*new));
-	while(read(file,&hdr,sizeof(hdr))>0)
-	{
-		struct listing *listing = head;
-		while (listing != NULL && strcasecmp(hdr.from, ptr->name))
-			listing = listing->next;
-
-		if (listing != NULL)
-		{
-			listing->count++;
-		 	listing->size+=hdr.size;
-		}
-		else
-		{
-			strcpy(new->name,hdr.from);
-			new->count=1;
-			new->size=hdr.size;
-			new->next=head;
-			head=new;
-			new=(struct listing *)malloc(sizeof(*new));
-		}
-	}
-	head=Sort(head);
-
-	printf("Top posters in folder %s\n",argv[1]);
-	printf("In order of Total size of text posted.\n");
-
-	ptr=head;
-	count=2;
-	while (ptr!=NULL)
-	{
-		printf("Name: %*s   %3d Msgs.   %5d bytes (%2.1fK)\n",NAMESIZE,ptr->name,ptr->count,ptr->size,ptr->size/1024.0);
-		ptr=ptr->next;
-		count++;
-		if (count>=screen_height-2)
-		{
-			printf("---more---\r");
-			get_str(buff, 5);
-			printf("          \r");
-			if (*buff=='q' || *buff=='Q') exit(0);
-			count=0;
-		}
-	}
-}

Deleted: trunk/src/topten.h
===================================================================
--- trunk/src/topten.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/topten.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -1,6 +0,0 @@
-#ifndef TOPTEN_H
-#define TOPTEN_H
-
-void topten(int argc, char **argv);
-
-#endif /* TOPTEN_H */

Modified: trunk/src/uri.c
===================================================================
--- trunk/src/uri.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/uri.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -20,22 +20,22 @@
 // action, minargc, maxargc, tcmode, needs su, function
 // tcmode: 0: no tabcomplete 1: always tc 2: tc only after first char matched (su edit functions)
 uriActionList uritable[]={
-	{ "list"			, 1, 3, 1, 0, uri_list },
-	{ "-log"			, 2, 2, 0, 0, uri_delete },
-	{ "delete"			, 2, 2, 1, 0, uri_delete },
-	{ "del"				, 2, 2, 0, 0, uri_delete },
-	{ "!delete"			, 2, 2, 2, 1, uri_delete },
-	{ "!del"			, 2, 2, 0, 1, uri_delete },
-	{ "nsfw"			, 2, 2, 1, 0, uri_nsfw },
-	{ "!nsfw"			, 2, 2, 2, 1, uri_nsfw },
-	{ "membersonly"		, 2, 2, 1, 0, uri_members_only },
-	{ "!membersonly"	, 2, 2, 2, 1, uri_members_only },
-	{ "sucs"			, 2, 2, 0, 0, uri_members_only },
-	{ "anonymous"		, 2, 2, 1, 0, uri_anon },
-	{ "!anonymous"		, 2, 2, 2, 1, uri_anon },
-	{ "anon"			, 2, 2, 0, 0, uri_anon },
-	{ "displaymode"		, 1, 2, 1, 0, uri_display_mode },
-	{ NULL, 0, 0, 1, 1, NULL }
+	{ "list",         1, 3, 1, 0, uri_list },
+	{ "-log",         2, 2, 0, 0, uri_delete },
+	{ "delete",       2, 2, 1, 0, uri_delete },
+	{ "del",          2, 2, 0, 0, uri_delete },
+	{ "!delete",      2, 2, 2, 1, uri_delete },
+	{ "!del",         2, 2, 0, 1, uri_delete },
+	{ "nsfw",         2, 2, 1, 0, uri_nsfw },
+	{ "!nsfw",        2, 2, 2, 1, uri_nsfw },
+	{ "membersonly",  2, 2, 1, 0, uri_members_only },
+	{ "!membersonly", 2, 2, 2, 1, uri_members_only },
+	{ "sucs",         2, 2, 0, 0, uri_members_only },
+	{ "anonymous",    2, 2, 1, 0, uri_anon },
+	{ "!anonymous",   2, 2, 2, 1, uri_anon },
+	{ "anon",         2, 2, 0, 0, uri_anon },
+	{ "displaymode",  1, 2, 1, 0, uri_display_mode },
+	{ NULL,           0, 0, 1, 1, NULL }
 };
 
 // uri flags
@@ -104,7 +104,7 @@
 
 // returns the long description for flag
 // should be duplicated if you want to edit it
-static char *uri_get_flag_description(int flag)
+static const char *uri_get_flag_description(int flag)
 {
 	uriFlagList *fl = uriflagtable;
 	
@@ -227,7 +227,7 @@
 }
 
 /* parse the .uri list command and display uris if appropriate */
-void uri_list(int argc, char **argv, int wiz)
+void uri_list(int argc, const char **argv, int wiz)
 {
 	char *username = NULL; // default is to display everyone's uris
 	int number = 10; // default is to display 10 uris
@@ -331,7 +331,7 @@
 // checks an id supplied to uri_delete/nsfw etc. is valid or creates an id if the user specified 'last'
 // if wiz is true "last" will return the the last uri in mwuri otherwise it is the current users last uri
 // returns 0 if the id is not valid.
-static unsigned int uri_get_id(char *idstr, int wiz)
+static unsigned int uri_get_id(const char *idstr, int wiz)
 {
 	unsigned int id;
 	char c;
@@ -374,7 +374,7 @@
 
 // deletes uri argv[1] if argv[1] is the id of a valid uri or "last"
 // if wiz is true any uri can be deleted otherwise only the current user's
-void uri_delete(int argc, char **argv, int wiz)
+void uri_delete(int argc, const char **argv, int wiz)
 {
 	unsigned int id;
 	char *query;	
@@ -451,7 +451,7 @@
 
 // toggles flag uri argv[1] if argv[1] is the id of a valid uri or "last"
 // if wiz then any uri can be modified otherwise only the current user's
-static void uri_set_flag(int argc, char **argv, int wiz, int flag)
+static void uri_set_flag(int argc, const char **argv, int wiz, int flag)
 {
 	unsigned int id;
 	char mesg[MAXTEXTLENGTH];	
@@ -462,7 +462,7 @@
 	char *username, *uri, *added;
 	int flags;
 	char flagstr[1024];
-	char *desc_str = uri_get_flag_description(flag);
+	const char *desc_str = uri_get_flag_description(flag);
 	
 	if(desc_str == NULL) {
 		printf("uri: whoops, someone needs to debug\n");
@@ -542,23 +542,23 @@
 }
 
 // these 3 flag functions call the man set_flag with the right flag
-void uri_nsfw(int argc, char **argv, int wiz)
+void uri_nsfw(int argc, const char **argv, int wiz)
 {
 	uri_set_flag(argc, argv, wiz, URLFLAG_NSFW);
 }
 
-void uri_members_only(int argc, char **argv, int wiz)
+void uri_members_only(int argc, const char **argv, int wiz)
 {
 	uri_set_flag(argc, argv, wiz, URLFLAG_SUCS);
 }
 
-void uri_anon(int argc, char **argv, int wiz)
+void uri_anon(int argc, const char **argv, int wiz)
 {
 	uri_set_flag(argc, argv, wiz, URLFLAG_ANON);
 }
 
 // sets full or short display mode for uri list
-void uri_display_mode(int argc, char **argv, int wiz)
+void uri_display_mode(int argc, const char **argv, int wiz)
 {
 	char *mode = userdb_get(USERDB_PRIVATE, user->name, "mwuri_display_mode");
 	char default_mode[] = "short";
@@ -657,7 +657,7 @@
 	return(NULL);
 }
 
-char *uri_displaymodes[] = { "short", "full", NULL };
+const char *uri_displaymodes[] = { "short", "full", NULL };
 
 // tab completes arguments for the uri list and uri displaymode commands
 // list: a username

Modified: trunk/src/uri.h
===================================================================
--- trunk/src/uri.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/uri.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -10,20 +10,20 @@
 
 typedef struct uriaction
 {
-	char *action;
+	const char *action;
 	int min_argc;
 	int max_argc;
 	int tc_mode;
 	int needs_wiz;
-	void (*function)(int, char **, int);
+	void (*function)(int, const char **, int);
 } uriActionList;
 
 typedef struct uriflag
 {
 	int flag;
-	char *flagstr;
-	char *long_desc;
-	char *list_desc;
+	const char *flagstr;
+	const char *long_desc;
+	const char *list_desc;
 } uriFlagList;
 
 extern uriActionList uritable[];
@@ -32,12 +32,12 @@
 
 void uri_list_display(int number, const char * username);
 
-void uri_list(int argc, char **argv, int wiz);
-void uri_delete(int argc, char **argv, int wiz);
-void uri_nsfw(int argc, char **argv, int wiz);
-void uri_members_only(int argc, char **argv, int wiz);
-void uri_anon(int argc, char **argv, int wiz);
-void uri_display_mode(int argc, char **argv, int wiz);
+void uri_list(int argc, const char **argv, int wiz);
+void uri_delete(int argc, const char **argv, int wiz);
+void uri_nsfw(int argc, const char **argv, int wiz);
+void uri_members_only(int argc, const char **argv, int wiz);
+void uri_anon(int argc, const char **argv, int wiz);
+void uri_display_mode(int argc, const char **argv, int wiz);
 
 char *uri_action_tc(const char *text, int state);
 char *uri_arg_tc(const char *text, int state);

Modified: trunk/src/user.c
===================================================================
--- trunk/src/user.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/user.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -28,7 +28,7 @@
 #include "util.h"
 #include "intl.h"
 
-char *partlist_search[]={
+const char *partlist_search[]={
 "status", "special", "groups", "chatprivs", "chatmode", "protpower",
 "protlevel", NULL};
 
@@ -529,7 +529,7 @@
 	close(file);
 }
 
-void search(char *args, char *ptr)
+void search(const char *args, const char *ptr)
 {
 	int data;
 	int inv=0;

Modified: trunk/src/user.h
===================================================================
--- trunk/src/user.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/user.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -56,7 +56,7 @@
 void login_ok(struct person *usr, int32_t *userposn, int *autochat);
 void strip_name(char *string);
 void pick_salt(char *salt);
-void search(char *args, char *ptr);
+void search(const char *args, const char *ptr);
 void fetch_user(struct person *record, int32_t userposn);
 int is_old(struct person *usr, const char *name, int32_t *userposn);
 

Modified: trunk/src/webclient/Makefile
===================================================================
--- trunk/src/webclient/Makefile	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/webclient/Makefile	2012-11-18 02:31:42 UTC (rev 1290)
@@ -8,7 +8,7 @@
 HOMEPATH := $(libdir)/mw
 
 # cflags for standard 'cc' compiler
-CFLAGS= -Wall -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -pedantic --std=gnu99 -D_GNU_SOURCE -I.. -I/usr/include/postgresql
+CFLAGS= -Wall -Wshadow -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wwrite-strings -pedantic --std=gnu99 -D_GNU_SOURCE -I.. -I/usr/include/postgresql
 #LDFLAGS+= -pie
 
 # info strings, do not edit.

Modified: trunk/src/webclient/comms.c
===================================================================
--- trunk/src/webclient/comms.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/webclient/comms.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -27,7 +27,6 @@
 #include "../socket.h"
 #include "../ipc.h"
 
-extern int incoming_pipe;
 int command_sock;
 
 int die = 0;
@@ -68,7 +67,7 @@
 
 
 char * json_escape(char *in);
-static void handle_mesg();
+static void handle_mesg(void);
 
 /* unix socket to accept control commands from */
 void open_command_socket()
@@ -363,7 +362,7 @@
 		return 1;
 	}else
 	if (strncasecmp(buff, "auth ", 5)==0) {
-		int ret=0;
+		ret=0;
 		if (strcmp(&buff[5], authtext)==0)
 		{
 			co->authd = 1;
@@ -590,7 +589,7 @@
 	unlink(path);
 }
 
-void talk_rawbcast(char *fmt, ...)
+void talk_rawbcast(const char *fmt, ...)
 {
 	va_list va;
 	struct filter_info f_info;

Modified: trunk/src/webclient/comms.h
===================================================================
--- trunk/src/webclient/comms.h	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/webclient/comms.h	2012-11-18 02:31:42 UTC (rev 1290)
@@ -5,5 +5,5 @@
 int mainloop(int millis);
 char *json_escape(char *original);
 void close_cmd(void);
-void talk_rawbcast(char *fmt, ...);
+void talk_rawbcast(const char *fmt, ...) __attribute__((format(printf,1,2)));
 void create_user(struct person *me, int *userposn, const char *username, const char *password);

Modified: trunk/src/webclient/import.c
===================================================================
--- trunk/src/webclient/import.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/webclient/import.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -16,6 +16,7 @@
 #include <ipc.h>
 #include <perms.h>
 #include <bb.h>
+#include "import.h"
 
 int incoming_pipe = -1;
 

Modified: trunk/src/webclient/mwpoll.c
===================================================================
--- trunk/src/webclient/mwpoll.c	2012-11-17 20:13:34 UTC (rev 1289)
+++ trunk/src/webclient/mwpoll.c	2012-11-18 02:31:42 UTC (rev 1290)
@@ -33,7 +33,7 @@
 char *authtext = NULL;
 extern int die;
 
-int mydaemon(void)
+static int mydaemon(void)
 {
 	int pid = fork();
 
@@ -57,7 +57,7 @@
 }
 			
 
-void usage(const char *name)
+static void usage(const char *name)
 {
 	printf("Usage: %s [-u username] [-c channel] [-dsa] [-h host:port]\n", name);
 	printf("-u username	Select username\n");




More information about the mw-devel mailing list