[mw-devel] MW3 r1051 - trunk/src

arthur at sucs.org arthur at sucs.org
Mon Jul 21 16:08:23 BST 2008


Author: arthur
Date: 2008-07-21 16:08:23 +0100 (Mon, 21 Jul 2008)
New Revision: 1051

Removed:
   trunk/src/doing.c
Modified:
   trunk/src/Makefile
   trunk/src/edit.c
   trunk/src/incoming.c
   trunk/src/newmain.c
   trunk/src/proto.h
   trunk/src/who.c
Log:
no asserts, no compression. backing changes out again.


Modified: trunk/src/Makefile
===================================================================
--- trunk/src/Makefile	2008-07-21 14:46:06 UTC (rev 1050)
+++ trunk/src/Makefile	2008-07-21 15:08:23 UTC (rev 1051)
@@ -24,7 +24,7 @@
 # cflags for standard 'cc' compiler
 ALL_CFLAGS+= -Wall -pedantic -fpie -std=gnu99 -D_GNU_SOURCE
 LDFLAGS+= -pie
-LDLIBS+= -lreadline -lhistory -ltermcap -lcrypt -l$(JSLIB) -lsqlite3 -lcurl -lz
+LDLIBS+= -lreadline -lhistory -ltermcap -lcrypt -l$(JSLIB) -lsqlite3 -lcurl
 
 # info strings, do not edit.
 DEFS:= -DBUILD_DATE=\"$(shell date +%Y%m%d)\"
@@ -95,7 +95,7 @@
 topten.o sort.o tidyup.o gags.o script_inst.o script.o\
 incoming.o command.o chattable.o alias.o frl.o hash.o vars.o expand.o\
 mud.o mudtable.o files.o completion.o sentinel.o iconv.o gagtable.o \
-js.o sqlite.o ipc.o doing.o
+js.o sqlite.o ipc.o
 	$(CC) $(LDFLAGS) $(LDLIBS) -o $@ $^
 
 del_user: del_user.o perms.o strings.o

Deleted: trunk/src/doing.c
===================================================================
--- trunk/src/doing.c	2008-07-21 14:46:06 UTC (rev 1050)
+++ trunk/src/doing.c	2008-07-21 15:08:23 UTC (rev 1051)
@@ -1,284 +0,0 @@
-#include <string.h>
-#include <time.h>
-#include <zlib.h>
-
-#include "bb.h"
-#include "ipc.h"
-#include "strings.h"
-
-#define INFLATED_DOINGSIZE 160
-#define DEFLATED_PREFIX_SIZE 12
-#define DICT_LENGTH 2906
-#define LEVEL 9
-#define WINDOWBITS 12
-#define MEMLEVEL 8
-
-extern struct person *user;
-
-static void doing_inflate(const char *src, char *dst);
-static int doing_deflate(unsigned char *dst, size_t capacity,
-			 const char *src, size_t size,
-			 size_t *actualsize, size_t *discard);
-
-static const unsigned char deflated_prefix[DEFLATED_PREFIX_SIZE] =
-	"\x48\xe6\xe5\x63\x18\xff\x03\x00\x00\x00\x00\x01";
-
-static const char dictionary[] =
-	"is trying again thinks that it all went okay is far too hot having carried "
-	"too much fluid up the hill is making coffee is imagining the rude doing mes"
-	"sages SUs are going to set for unwitting entiti has left the building is tr"
-	"ying to find out if the A36 has been reopened is upgrading the kernel of hi"
-	"s phone is clock-watching until he can go and move house is waiting for God"
-	"ot has drunk too much coffee is changing his status message is moving house"
-	" :) is plotting your death is trying to figure out how to disable Ctrl-S in"
-	" screen is doing very little isn't any more hmm hasn't got the right time t"
-	"ests this thing decides to head for home Back In Swansea till Saturday is w"
-	"elcoming you to the new day.  is walking the dog is going to slap whoever s"
-	"et that message is figuring out how to use this new .doing command appearin"
-	"g after a haircut is seriously considering extra sleep is thinking about ea"
-	"ting soon is wondering when someone will get around to writing a link from "
-	"mw status to is (gasp!) doing work on his thesis is on a bus as the Central"
-	" Line is up the wall is now on the Jubilee Line for the second time today i"
-	"s on the Central Line home is failing to come up with anything to write her"
-	"e is sorting the photos he took today is listening to his Last.fm Favourite"
-	" Songs is asleep has gone to bed welcomes you to the new day.  is no longer"
-	" asleep is thinking that people should wonder a little less verbosely is co"
-	"ntemplating breakfast is contemplating a short nap.  is contemplating a new"
-	" status message is waking up after spending most of the night awake debatin"
-	"g the meaning of li is not awake, despite appearances to the contrarary eva"
-	"luating pi has gone for a bath :) is seeking motivation is stewing the rhub"
-	"arb he just pulled from the garden is now getting lunch - brb.  is failing "
-	"to remember what he set his status message to is back from lunch yawns is l"
-	"ying in his status message is playing Scramble is drinking tea is listening"
-	" to kerrang TV channel is going home.  is in Swansea hates meetings...  is "
-	"not thinking about elephants.  has had enough for today, hometime is thinki"
-	"ng about not thinking about elephants.  is not thinking about 4th order Run"
-	"ge-Kutta integrators and rigid bodies.  has gone to bed is sleeping is off "
-	"to <brandname removed> being strangled by a blue tie-shaped thing is not th"
-	"inking about thinking about elephants still isn't thinking about elephants."
-	"  Welcomes you aboard the Milliways Service terminating at the restaurant a"
-	"t the is listening to his Last.fm radio station is asleep at his desk.  hea"
-	"ds into town to see a man about a dog is verbosely wondering whether 78 cha"
-	"racters is in fact really enough for stat at work, meh is back from going t"
-	"o the JobCentre (etc) has finshed assembleing for another week...  is retur"
-	"ning is outta here...  finds it strange that he's here first this morning i"
-	"s entering is testing is eating leftover egg fried rice";
-
-/*
-// This may need to be re-run if zlib is upgraded, but is not required in a normal
-// build:
-
-void doing_generate_deflated_prefix(void) {
-	unsigned char out_buf[42];
-	size_t have, line, col;
-
-	z_stream strm;
-	strm.zalloc = Z_NULL;
-	strm.zfree = Z_NULL;
-	strm.opaque = Z_NULL;
-	strm.avail_in = 0;
-	strm.next_in = Z_NULL;
-	deflateInit2(&strm, LEVEL, Z_DEFLATED, WINDOWBITS, MEMLEVEL, Z_DEFAULT_STRATEGY);
-	deflateSetDictionary(&strm, (const Bytef *) dictionary, DICT_LENGTH);
-
-	strm.avail_out = sizeof (out_buf);
-	strm.next_out = out_buf;
-	deflate(&strm, Z_FINISH);
-	deflateEnd(&strm);
-
-	have = sizeof (out_buf) - strm.avail_out;
-	printf("%d\n", (int) have);
-	
-	for (line = 0; line < have; line += 17)
-	{
-		printf("\t\"");
-		for (col = 0; col < 17; ++ col)
-		if (line + col < have)
-			printf("\\x%02x", out_buf[line+col]);
-		printf("\"\n");
-	}
-}
-
-*/
-
-static void doing_inflate(const char *src, char *dst) {
-	z_stream strm;
-	int r;
-	size_t discard_bytes;
-	size_t doing_bytes;
-        size_t suffix_offset;
-
-	// Stream setup
-	strm.zalloc = Z_NULL;
-	strm.zfree = Z_NULL;
-	strm.opaque = Z_NULL;
-	strm.avail_in = 0;
-	strm.next_in = Z_NULL;
-	inflateInit2(&strm, WINDOWBITS);
-
-	// Concatenate deflated prefix + deflated suffix
-	discard_bytes = (size_t) (0xff & (unsigned int) src[0]) - 1;
-	doing_bytes = (size_t) (0xff & (unsigned int) src[1]);
-        suffix_offset = DEFLATED_PREFIX_SIZE - discard_bytes;
-
-	// First inflate the prefix
-	strm.avail_in = suffix_offset;
-	strm.next_in = (Bytef *) deflated_prefix;
-	strm.avail_out = MAXTEXTLENGTH;
-	strm.next_out = (Bytef *) dst;
-	r = inflate(&strm, Z_NO_FLUSH);
-	inflateSetDictionary(&strm, (const Bytef *) dictionary, DICT_LENGTH);
-	r = inflate(&strm, Z_NO_FLUSH);
-
-	// Then inflate the status message
-	strm.avail_in = doing_bytes;
-	strm.next_in = (Bytef *) &src[2];
-	r = inflate(&strm, Z_FINISH);
-
-	inflateEnd(&strm);
-
-	dst[MAXTEXTLENGTH - strm.avail_out] = '\0';
-}
-
-void doing_show(const char *name, const char *doing, long dowhen) {
-	char doingtext[MAXTEXTLENGTH];
-
-	if (dowhen && doing_iscompressed(doing)) {
-		doing_inflate(doing, doingtext);
-		escprintf("%s %s (%s ago)\n", name, doingtext, itime(time(0)-dowhen));
-	} else if (dowhen && doing[0] != 0) {
-		escprintf("%s %s (%s ago)\n", name, doing, itime(time(0)-dowhen));
-	}
-}
-
-void doing_show_wholist(int wiz, pid_t pid, char chat, const struct person *usrp) {
-	char doingtext[MAXTEXTLENGTH];
-	const char *idle = itime(time(0) - usrp->idletime);
-
-	if (doing_iscompressed(usrp->doing))
-		doing_inflate(usrp->doing, doingtext);
-	else
-		strcpy(doingtext, usrp->doing);
-
-	if (wiz) {
-		printf("%-5d %c%-*s %-20.20s %6s %s\n", pid, chat, NAMESIZE, usrp->name, usrp->realname, idle, doingtext);
-	} else {
-		printf("%c%-*s %6s %s\n", chat, NAMESIZE, usrp->name, idle, doingtext);
-	}
-}
-
-static int doing_deflate(unsigned char *dst, size_t capacity,
-			 const char *src, size_t size,
-			 size_t *actualsize, size_t *discard) {
-	unsigned char out_buf[DEFLATED_PREFIX_SIZE + MAXTEXTLENGTH];
-	size_t have, match_count;
-	int result = 1;
-
-	// Stream setup
-	z_stream strm;
-	strm.zalloc = Z_NULL;
-	strm.zfree = Z_NULL;
-	strm.opaque = Z_NULL;
-	strm.avail_in = 0;
-	strm.next_in = Z_NULL;
-	deflateInit2(&strm, LEVEL, Z_DEFLATED, WINDOWBITS, MEMLEVEL, Z_DEFAULT_STRATEGY);
-	deflateSetDictionary(&strm, (const Bytef *) dictionary, DICT_LENGTH);
-
-	// Compress the status message
-	strm.avail_in = size;
-	strm.next_in = (unsigned char *) src;
-	strm.avail_out = sizeof (out_buf);
-	strm.next_out = out_buf;
-	deflate(&strm, Z_FINISH);
-	deflateEnd(&strm);
-
-	have = sizeof (out_buf) - strm.avail_out;
-	*actualsize = have;
-
-	// Find the range of bytes that differ between prefix and (prefix + status)
-	for (match_count = 0; match_count < DEFLATED_PREFIX_SIZE; ++ match_count) {
-		if (out_buf[match_count] != deflated_prefix[match_count])
-			break;
-	}
-
-	*discard = DEFLATED_PREFIX_SIZE - match_count;
-	if (have <= capacity + match_count)
-		memcpy(dst, &out_buf[match_count], have - match_count);
-
-	return result;
-}
-
-int doing_iscompressed(const char *doing) {
-	return doing[0] && (0xff & (int) doing[0]) < 033;
-}
-
-
-int doing_edit(char *doing, const char *name) {
-	int changed = 0;
-	char doingtext[MAXTEXTLENGTH];
-
-	if (doing_iscompressed(doing))
-		doing_inflate(doing, doingtext);
-	else
-		strcpy(doingtext, doing);
-
-	printf(_("Current Status: %s\n"), doingtext);
-	printf(_("New Status (%d chars): "), INFLATED_DOINGSIZE - 1);
-	get_str(doingtext, INFLATED_DOINGSIZE - 1);
-
-	if (*doingtext) {
-		doing_set(doing, doingtext);
-		ipc_send_to_username(name, IPC_DOING, doingtext);
-		broadcast(3, "%s has just changed %s's status to %s.", user->name, name, doingtext);
-		mwlog("CHANGE(STATUS) of %s to %s", name, doingtext);
-		changed = 1;
-	}
-
-	return changed;
-}
-
-void doing_set(char *dst, const char *src) {
-	size_t doinglen = strlen(src);
-	size_t actual_size, discard_bytes;
-	unsigned char deflate_buf[DOINGSIZE - 2];
-	int deflate_ok, overflowed;
-
-	// Hard limit of INFLATED_DOINGSIZE characters
-	if (doinglen > INFLATED_DOINGSIZE)
-		doinglen = INFLATED_DOINGSIZE;
-
-	// Fits in the buffer without compression?
-	if (doinglen < DOINGSIZE) {
-		// Just copy
-		sprintf(dst, "%.*s", (int) doinglen, src);
-	} else {
-		// Trim the string one character at a time until the deflated version
-		// fits in the buffer
-		do {
-			deflate_ok = doing_deflate(deflate_buf, sizeof(deflate_buf),
-						   src, doinglen,
-						   &actual_size, &discard_bytes);
-			if (! deflate_ok) {
-				break;
-			} else {
-				overflowed = (actual_size >= DOINGSIZE - 2);
-				if (overflowed)
-					-- doinglen;
-			}
-		} while (overflowed);
-
-		if (deflate_ok && discard_bytes < 032) {
-			dst[0] = (char) (discard_bytes + 1);
-			dst[1] = (char) (actual_size + 1);
-			memcpy(&dst[2], deflate_buf, actual_size);
-		} else {
-			// Deflation failed; Truncate and store plain text
-			if (doinglen >= DOINGSIZE)
-				doinglen = DOINGSIZE - 1;
-
-			// Just copy
-			sprintf(dst, "%.*s", (int) doinglen, src);
-		}
-	}
-}
-

Modified: trunk/src/edit.c
===================================================================
--- trunk/src/edit.c	2008-07-21 14:46:06 UTC (rev 1050)
+++ trunk/src/edit.c	2008-07-21 15:08:23 UTC (rev 1051)
@@ -337,13 +337,17 @@
 	if (stringcmp(args,"doing",2))
 	{
 		char doing[DOINGSIZE];
-		memcpy(doing, usr.doing, DOINGSIZE);
-		
-		if (doing_edit(doing, usr.name))
+		printf(_("Current Status: %s\n"),usr.doing);
+		printf(_("New Status (%d chars): "),DOINGSIZE-1);
+		get_str(doing,DOINGSIZE-1);
+		if (*doing)
 		{
-			memcpy(usr.doing, doing, DOINGSIZE);
+			strcpy(usr.doing,doing);
 			usr.dowhen = time(0);
+			ipc_send_to_username(usr.name, IPC_DOING, usr.doing);
 			printf(_("New status set.\n"));
+			broadcast(3, "%s has just changed %s's status to %s.", user->name, usr.name, doing);
+			mwlog("CHANGE(STATUS) of %s to %s", usr.name, doing);
 		}
 	}else
 	if (stringcmp(args,"timeout",1))

Modified: trunk/src/incoming.c
===================================================================
--- trunk/src/incoming.c	2008-07-21 14:46:06 UTC (rev 1050)
+++ trunk/src/incoming.c	2008-07-21 15:08:23 UTC (rev 1051)
@@ -540,7 +540,7 @@
 			strcpy(user->contact,newbuff);
 			break;
 		case IPC_DOING:
-			doing_set(user->doing, newbuff);
+			snprintf(user->doing,DOINGSIZE,"%s",newbuff);
 			user->dowhen=time(0);
 			break;
 		case IPC_SPECIAL:

Modified: trunk/src/newmain.c
===================================================================
--- trunk/src/newmain.c	2008-07-21 14:46:06 UTC (rev 1050)
+++ trunk/src/newmain.c	2008-07-21 15:08:23 UTC (rev 1051)
@@ -451,10 +451,10 @@
 void c_doing(CommandList *cm, int argc, char **argv, char *args)
 {
 	if (argc > 1) {
-		doing_set(user->doing, args);
+		snprintf(user->doing, DOINGSIZE, "%s", args);
 		user->dowhen = time(0);
 		update_user(user,userposn);
-		broadcast(5, "%s %s", user->name, args);
+		broadcast(5, "%s %s", user->name, user->doing);
 	} else {
 		user->doing[0] = 0;
 		user->dowhen = time(0);

Modified: trunk/src/proto.h
===================================================================
--- trunk/src/proto.h	2008-07-21 14:46:06 UTC (rev 1050)
+++ trunk/src/proto.h	2008-07-21 15:08:23 UTC (rev 1051)
@@ -256,11 +256,5 @@
 /* alias.c */
 char *list_bind(const char *text, int state);
 char *list_alias(const char *text, int state);
-/* doing.c */
-void doing_show(const char *name, const char *doing, long dowhen);
-void doing_set(char *dst, const char *src);
-int doing_edit(char *doing, const char *name);
-int doing_iscompressed(const char *doing);
-void doing_show_wholist(int wiz, pid_t pid, char chat, const struct person *usrp);
 
 #endif /* PROTO_H */

Modified: trunk/src/who.c
===================================================================
--- trunk/src/who.c	2008-07-21 14:46:06 UTC (rev 1050)
+++ trunk/src/who.c	2008-07-21 15:08:23 UTC (rev 1051)
@@ -4,7 +4,6 @@
  *       see licence for furthur information.            *
  *********************************************************/
 
-#include <assert.h>
 #include <stdio.h>
 #include <errno.h>
 #include <signal.h>
@@ -112,7 +111,7 @@
 		show_user_stats(u.status,stats,TRUE);
 
 		/* can they hear wiz messages ? */
-		if (wizchat && (s_wizchat(u.special) && !s_chatoff(u.special)))
+		if (s_wizchat(u.special) && !s_chatoff(u.special))
 			chat='*';
 		else
 			chat=' ';
@@ -121,7 +120,8 @@
 		if (! ipc_send_to_pid(w.pid, IPC_NOOP, NULL))
 		{
 			if (mode == 1) {
-				doing_show(u.name, u.doing, u.dowhen);
+				if (u.dowhen && u.doing[0] != 0)
+				printf("%s %s (%s ago)\n",u.name, u.doing ,itime(time(0)-u.dowhen));
 			} else {
 			if (cm_flags(u.chatmode,CM_ONCHAT,CM_MODE_ANY))
 			{
@@ -160,10 +160,6 @@
 				}
 				else
 					snprintf(u.doing,DOINGSIZE, "Room %d",u.room); 
-				/* All branches above overwrite u.doing, so it should
-				 * not now be compressed.
-				 */
-				assert (! doing_iscompressed(u.doing));
 
 				off=strlen(u.doing);
 				snprintf(&u.doing[off],DOINGSIZE-off," (");
@@ -215,8 +211,14 @@
 				snprintf(&u.doing[off],DOINGSIZE-off,")");
 			}
 
-			doing_show_wholist(wiz, w.pid, chat, &u);
+			if (wiz)
+			{
+				printf("%-5d %c%-*s %-20.20s %6s %s\n",w.pid,chat,NAMESIZE,u.name,u.realname,itime(time(0)-u.idletime),u.doing);
+			}else
+			{
+				printf("%c%-*s %6s %s\n",wizchat?chat:' ',NAMESIZE,u.name,itime(time(0)-u.idletime),u.doing);
 			}
+			}
 		}
 	}
 	printf("%s\n", divider);





More information about the mw-devel mailing list