Content-Type: multipart/alternative;

This is a multi-part message in MIME format.
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

This message is in MIME format. Since your mail reader does not
understand =
this format, some or all of this message may not be legible.
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

No, my mail reader understands it perfectly. It’s your crappy mail
client that sends out multipart/alternative mails which don’t contain
alternatives. Fuckers.

mojo-jojo david% ant clean
Buildfile: build.xml

     [echo] Deleting all project files
   [delete] Deleting directory /home/david/tomcat5.5-5.5.20/servletapi
   [delete] Deleting directory /home/david/tomcat5.5-5.5.20/container
   [delete] Deleting directory /home/david/tomcat5.5-5.5.20/jasper
   [delete] Deleting directory /home/david/tomcat5.5-5.5.20/connectors
   [delete] Deleting directory /home/david/tomcat5.5-5.5.20/build

Total time: 46 seconds
mojo-jojo david% ls
build.xml  debian/
mojo-jojo david% 


It can be quite discouraging to type “yum update” and have
yum simply go off forever. Among other things, one must wait a great
long time to distinguish this behavior from yum’s normal mode of
operation. Other times, it comes back very quickly with a message
saying, for all practical purposes, “RPM crashed, you lose,

via (subscription

Jonathan Corbet normally manages to amuse me on a weekly basis, but
this time he’s outdone himself. Consider my subcription renewed
for another year.

Update: I;ve been convinced to include a subscriber
link to the article for those without subscriptions.

I was using our Fedora 3 server and decided to restart sshd running in a

[root@winky /]# /etc/init.d/sshd restart
Stopping sshd:/etc/init.d/sshd: line 212: kill: (1483) - No such process
Connection to winky closed by remote host.
Connection to winky closed.
mimsy david% ssh winky -l root
ssh: connect to host winky port 22: Connection refused

Thank you very much Fedora.

A “friend” of mine has recently been sending me forwarded jokes and
other assorted crap we all grew out of sending about 5 minutes after
we learnt how to send emails. This I can cope with, but recently, for
every email she sends, I’ve been receiving an automated email from a
server somewhere telling me that it’s blocked an attachment, once for
each attachment
in the original email. That’s crime number one. Looking
at it further it appears that its not the sender’s mail servers doing
it, but once of the recipient’s mail servers. When it gets an email
with an attachment it’s blocked, it emails everyone in the To: header
to tell them, irrespective of whether they are local users or
. That’s crime number two.

I thought I’d email to tell them of
this problem, but unsurprisingly it bounced. That’s crime number
three. Looking on their website, I couldn’t find any technical
contacts, which wasn’t really surprising. I did how ever find a
“general enquiries” form, so I filled that in. Unfortunately, they
used the following html for the message box:

<textarea name="Feedback1:fldEnquiry" rows="6" cols="1"
   id="Feedback1_fldEnquiry" class="enquiryTable"></textarea>

The result is that you get a text box 6 rows high and one column
across, which is basically unuseable. Interestingly they appear to
add style="width: 350px;" in IE, which makes it work. I’ll
make that crimes 4 and 5, cos doing different things for different
browsers is a crime in itself.

I await a phone call or email from them.

Dear perl programmers,

When using open(), please don’t use:

open FILE, "$file" or die "couldn't open filen";

It really helps if you tell us what file you’re trying to open and
what went wrong. The correct error message is:

open FILE, "$file" or die "could not open $file: $!n";

Thank you.

I’m always amazed at the number of bad shell scripts I keep coming
across. Take this snippet for example:

TEMP1=`mktemp /tmp/tempenv.XXXXXX` || exit 1
perl $CONF_DIR/ $@ > $TEMP1
if [ $? != 0 ]; then

. $TEMP1
rm -f $TEMP1

There are several things wrong with this. First it uses a temporay file.
Secondly it uses more processes than are required and thirdly it doesn’t
clean up after itself properly. If perl failed, the temp file would
still be created, but not deleted. The last problem can be solved with
some suitable uses of trap:

TEMP1=`mktemp /tmp/tempenv.XXXXXX` || exit 1
trap "rm -f $TEMP" INT TERM EXIT
perl $CONF_DIR/ $@ > $TEMP1
if [ $? != 0 ]; then

. $TEMP1
rm -f $TEMP1

Of course this can all be replaced with a single line:

eval $(perl $CONF_DIR/ $@)