[RFC] A trivial change for DESKTOP_ENTRIES

Stephen Montgomery-Smith stephen at missouri.edu
Wed Jul 13 04:08:03 UTC 2011


On 07/12/2011 05:25 PM, Jung-uk Kim wrote:
> After I updated x11-wm/compiz, GNOME was not able to start the window
> manager.  Basically, it complained that compiz-manager was not found.
> Then, I realized compiz-manager.desktop was automagically replaced by
> compizmanager.desktop.  Now I tracked it down to this commit:
>
> Sat Nov 27 17:42:46 2010 UTC (7 months, 2 weeks ago) by pav
>
> - DESKTOP_ENTRIES: commandline is used to name installed .desktop
> file, this can lead to files containing whitespace and funny
> characters; thus strip all non-alphanumeric characters
>
> http://www.freebsd.org/cgi/cvsweb.cgi/ports/Mk/bsd.port.mk.diff?r1=1.656;r2=1.657
>
> To me, it looks far too restrictive.  At least, I'd like to allow '-'
> and '_'.  Please see the attached patch.
>
> Any objections?
>
> Jung-uk Kim

Thinking more about it, it seems to me that instead of silently deleting 
the disallowed characters in the filename, that the port should declare 
itself broken if there are disallowed characters.  That way, this 
particular error would have been caught far more easily.

Here is a simple patch, although I think you guys could come up with a 
better error message.

-------------- next part --------------
diff -u bsd.port.mk-orig bsd.port.mk
--- bsd.port.mk-orig	2011-07-13 03:48:35.000000000 +0000
+++ bsd.port.mk	2011-07-13 04:04:14.000000000 +0000
@@ -6432,7 +6432,10 @@
 		${ECHO_CMD} "@cwd ${DESKTOPDIR}" >> ${TMPPLIST}; \
 	fi; \
 	while [ $$# -gt 6 ]; do \
-		filename="`${ECHO_CMD} "$$4" | ${TR} -cd [:alnum:]`.desktop"; \
+		filename="`${ECHO_CMD} "$$4" | ${TR} -cd "[:alnum:]-_"`.desktop"; \
+		if [ "$$filename" != "$$4.desktop" ]; then \
+			${ECHO_MSG} "===> Disallowed characters in entry 4 of DESKTOP_ENTRIES \"$$4\""; exit 1; \
+		fi; \
 		pathname="${DESKTOPDIR}/$$filename"; \
 		categories="$$5"; \
 		if [ -z "$$categories" ]; then \



More information about the freebsd-ports mailing list