[mojosetup] Uninstall support!

Ryan C. Gordon icculus at icculus.org
Thu Jan 24 20:58:42 EST 2008


>>    #!/bin/sh
>>    exec "`dirname $0`"'/.mojosetup/mojosetup' uninstall 'duke3d' $*
>>    exit 1
> 
> Why "exit 1"?  Since 1 means failure that'll make it seem like the
> script always fails for things that want to check that.  Wouldn't it be
> better to return the actual return value?  (Would "exit $?" work?)
> Also using "$@" in stead of $* would be better, I think, for multiple
> arguments.

The "exec" replaces the /bin/sh process with the "mojosetup" one...if 
you hit the "exit" line at all, it means the program failed to run.

Then again, I just noticed that "exec" sets the error code to 127, so 
the "exit 1" isn't necessary. I'm tempted to leave it, just in case a 
broken shell doesn't do it, though.

> Actually, having a script in the first place isn't even necessary on
> filesystems that support links.  You could just make a symlink
> to ".mojosetup/mojosetup" named "uninstall_duke3d", and then
> the mojosetup executable could parse its argv[0], finding uninstall
> there, and then proceed to get the "duke3d" package id.  This would
> also avoid the "really execute this script?" prompt you get in Gnome's
> file browser when executing scripts.

Eh, I don't know...seems like bad practice to rely on the value of 
argv[0] for commands. I know some Unix things do this, but I'm not sure 
I'm comfortable with it. Let me think about it.

--ryan.





More information about the mojosetup mailing list