ports/133669: [patch] x11/printscreen update to 1.3
Alex Kozlov
spam at rm-rf.kiev.ua
Sun Apr 12 20:20:05 UTC 2009
>Number: 133669
>Category: ports
>Synopsis: [patch] x11/printscreen update to 1.3
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Apr 12 20:20:04 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Alex Kozlov
>Release:
>Organization:
private
>Environment:
>Description:
Make printscreen more user friendly.
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
Index: x11/printscreen/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= printscreen
-PORTVERSION= 1.0
+PORTVERSION= 1.3
CATEGORIES= x11
DISTFILES=
Index: x11/printscreen/files/printscreen.in
@@ -1,13 +1,88 @@
#!/bin/sh
-PATH=/bin:/usr/local/bin
+PATH=/bin:/usr/bin:/usr/local/bin
+xwdcommon='-nobdrs'
+xwdroot='-root'
+
+INFMT=pnm
+OUTFMT=png
STOREDIR="${HOME}/.screenshots"
SHOTDATE="$(date +%Y.%m.%d-%H.%M.%S)"
-SHOTNAME="${STOREDIR}/screenshot-${SHOTDATE}.png"
-if [ ! -d "${STOREDIR}" ]; then
- mkdir "${STOREDIR}"
-fi
+parse_options()
+{
+ local OPT OPTARG OPTIND fmt fmtlist i
+
+ while getopts d:f:bhlqs OPT; do
+ # escape meta
+ OPTARG=${OPTARG%%[;\\\$]*}
+
+ case ${OPT} in
+ b) xwdcommon="${xwdcommon} -frame" ;;
+ d) delay="${OPTARG}" ;;
+ f)
+ OUTFMT="${OPTARG}"
+ unset INFMT
+
+ for fmt in pnm pbm pgm ppm; do
+ if [ -x /usr/local/bin/${fmt}to${OUTFMT} ]; then
+ INFMT=${fmt}
+ break
+ fi
+ done
+
+ [ -z "${INFMT}" ] && usage
+ ;;
+ l)
+ for i in /usr/local/bin/p[nbgp]mto*; do
+ fmtlist="${fmtlist} $(echo ${i} | \
+ sed -Ee's:/usr/local/bin/(pnm|pbm|pgm|ppm)to::')"
+ done
+ echo Supported output formats:
+ echo ${fmtlist}
+ exit 0
+ ;;
+ q) xwdcommon="${xwdcommon} -silent";;
+ s) unset xwdroot ;;
+ h|*) usage ;;
+ esac
+ done
+
+ OPTC=$((${OPTIND} - 1))
+}
+
+usage()
+{
+ echo "usage: ${0##*/} [-bhlqs] [-d sec] [-f outfmt] [shotname]"
+ echo ' -b when selecting a window, grab wm border too'
+ echo ' -d wait sec seconds before taking a shot'
+ echo ' -f set output format'
+ echo ' -h display this help and exit'
+ echo ' -l list output formats'
+ echo ' -q be silent'
+ echo ' -s interactively choose a window'
+ echo
+ echo "Screenshots stored in ${HOME}/.screenshots"
+ echo
+ exit 1
+}
+
+parse_options ${1+"$@"}
+shift ${OPTC}
+
+if [ -z ${@+1} ]; then
+ SHOTNAME="${STOREDIR}/screenshot-${SHOTDATE}.${OUTFMT}"
+else
+ SHOTNAME=$1
+ shift
+
+ [ -z ${@+1} ] || usage
+fi
+
+[ -d "${STOREDIR}" ] || mkdir "${STOREDIR}"
+
+[ -n "${delay}" ] && sleep "${delay}"
-xwd -root | xwdtopnm 2>/dev/null | pnmtopng 2>/dev/null > "${SHOTNAME}"
+xwd ${xwdcommon} ${xwdroot} | xwdtopnm 2>/dev/null | \
+ "${INFMT}to${OUTFMT}" 2>/dev/null > "${SHOTNAME}"
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list