Skip to content

Commit afaf01b

Browse files
authored
Merge pull request #16 from sapireli/codex/remove-check_airprint_support-and-update-generate_urf
Improve URF code coverage
2 parents d0a5b57 + ba39207 commit afaf01b

File tree

1 file changed

+41
-30
lines changed

1 file changed

+41
-30
lines changed

airprint_bridge.sh

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -160,25 +160,6 @@ if [ "$EUID" -ne 0 ] && { [ "$COMMAND" = "install" ] || [ "$COMMAND" = "uninstal
160160
exit 1
161161
fi
162162

163-
# Function to check if a printer supports AirPrint
164-
# Checks DNS-SD records for URF and pdl entries associated with the printer.
165-
check_airprint_support() {
166-
local printer="$1"
167-
local found=0
168-
169-
while IFS= read -r line; do
170-
if [[ "$line" == *"$printer"* ]]; then
171-
service_name=$(echo "$line" | awk '{for (i=7; i<=NF; i++) printf "%s ", $i; print ""}' | sed 's/[[:space:]]*$//')
172-
service_output=$(dns-sd -m -L "$service_name" _ipp._tcp local 2>/dev/null)
173-
if echo "$service_output" | grep -q "URF=" && echo "$service_output" | grep -q "pdl="; then
174-
found=1
175-
break
176-
fi
177-
fi
178-
done < <(dns-sd -m -B _ipp._tcp local 2>/dev/null)
179-
180-
[ $found -eq 1 ]
181-
}
182163

183164
# Function to list local shared printers without AirPrint support
184165
# Finds printers on the system that are shared but do not currently support AirPrint.
@@ -205,11 +186,7 @@ browse_printers() {
205186
fi
206187

207188
for printer in "${shared_printers[@]}"; do
208-
if check_airprint_support "$printer"; then
209-
log "Skipping printer '$printer' as it already supports AirPrint."
210-
else
211-
PRINTERS+=("$printer")
212-
fi
189+
PRINTERS+=("$printer")
213190
done
214191

215192
if [ ${#PRINTERS[@]} -eq 0 ]; then
@@ -260,9 +237,10 @@ generate_urf() {
260237
IFS=' ' read -r -a color_modes <<< "$(echo "$line" | awk -F': ' '{print $2}')"
261238
for color_mode in "${color_modes[@]}"; do
262239
case "$color_mode" in
263-
*Gray*) add_urf_code "W8" ;;
264-
*RGB*) add_urf_code "SRGB24" ;;
265-
*CMYK*) add_urf_code "ADOBERGB24" ;;
240+
*Gray*|*Black*) add_urf_code "W8" ;;
241+
*RGB*|*Color*) add_urf_code "SRGB24" ;;
242+
*AdobeRGB*) add_urf_code "ADOBERGB24" ;;
243+
*CMYK*) add_urf_code "CMYK32" ;;
266244
esac
267245
done
268246
;;
@@ -275,17 +253,34 @@ generate_urf() {
275253
*Draft*) add_urf_code "PQ1" ;;
276254
*Normal*) add_urf_code "PQ2" ;;
277255
*High*) add_urf_code "PQ3" ;;
256+
*Photo*|*Best*) add_urf_code "PQ4" ;;
278257
esac
279258
done
280259
;;
281-
260+
261+
# Orientation Options
262+
*"Orientation"*|*"orientation"*)
263+
IFS=' ' read -r -a orientations <<< "$(echo "$line" | awk -F': ' '{print $2}')"
264+
for orient in "${orientations[@]}"; do
265+
case "$orient" in
266+
*Portrait*|*None*) add_urf_code "OR0" ;;
267+
*Landscape*) add_urf_code "OR1" ;;
268+
*ReverseLandscape*) add_urf_code "OR2" ;;
269+
*ReversePortrait*) add_urf_code "OR3" ;;
270+
esac
271+
done
272+
;;
273+
274+
282275
# Duplex Mode Options
283276
*"Duplex"*)
284277
IFS=' ' read -r -a duplex_modes <<< "$(echo "$line" | awk -F': ' '{print $2}')"
285278
for duplex_mode in "${duplex_modes[@]}"; do
286279
case "$duplex_mode" in
287-
*DuplexNoTumble*) add_urf_code "DM1" ;;
280+
*None*|*Off*|*Simplex*) add_urf_code "DM1" ;;
281+
*DuplexNoTumble*) add_urf_code "DM2" ;;
288282
*DuplexTumble*) add_urf_code "DM3" ;;
283+
*DuplexManual*) add_urf_code "DM4" ;;
289284
esac
290285
done
291286
;;
@@ -296,8 +291,16 @@ generate_urf() {
296291
for media_size in "${media_sizes[@]}"; do
297292
case "$media_size" in
298293
*Letter*) add_urf_code "MS_LETTER" ;;
299-
*A4*) add_urf_code "MS_A4" ;;
300294
*Legal*) add_urf_code "MS_LEGAL" ;;
295+
*A4*) add_urf_code "MS_A4" ;;
296+
*A3*) add_urf_code "MS_A3" ;;
297+
*A5*) add_urf_code "MS_A5" ;;
298+
*A6*) add_urf_code "MS_A6" ;;
299+
*B5*) add_urf_code "MS_B5" ;;
300+
*Executive*) add_urf_code "MS_EXECUTIVE" ;;
301+
*Tabloid*) add_urf_code "MS_TABLOID" ;;
302+
*4x6*|*4X6*) add_urf_code "MS_4X6" ;;
303+
*5x7*|*5X7*) add_urf_code "MS_5X7" ;;
301304
esac
302305
done
303306
;;
@@ -316,6 +319,8 @@ generate_urf() {
316319
*photographic*) add_urf_code "MT6" ;;
317320
*glossy*) add_urf_code "MT7" ;;
318321
*matte*) add_urf_code "MT8" ;;
322+
*cardstock*) add_urf_code "MT9" ;;
323+
*letterhead*) add_urf_code "MT10" ;;
319324
esac
320325
done
321326
;;
@@ -329,6 +334,12 @@ generate_urf() {
329334
*tray-1*) add_urf_code "IS2" ;;
330335
*tray-2*) add_urf_code "IS3" ;;
331336
*Manual*) add_urf_code "IS4" ;;
337+
*tray-3*) add_urf_code "IS5" ;;
338+
*tray-4*) add_urf_code "IS6" ;;
339+
*tray-5*) add_urf_code "IS7" ;;
340+
*envelope*) add_urf_code "IS8" ;;
341+
*multi*|*multipurpose*) add_urf_code "IS9" ;;
342+
*photo*) add_urf_code "IS10" ;;
332343
esac
333344
done
334345
;;

0 commit comments

Comments
 (0)