#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $LOG = 0;

#
# This script maps a usblp printer into /dev/usb_lp_printer
#

# mylog(Dumper(\%ENV));

$ENV{ID_VENDOR_ID} //= "";
$ENV{ID_MODEL_ID} //= "";

exit unless $ENV{ID_VENDOR_ID} && $ENV{ID_MODEL_ID};

#sleep 2;

#[ 1623.747474] usblp 1-2.3:1.0: usblp2: USB Bidirectional printer dev 21 if 0 alt 0 proto 2 vid 0x1C8A pid 0x3A0E
my $dev_info = `dmesg | grep -i "vid 0x$ENV{ID_VENDOR_ID} pid 0x$ENV{ID_MODEL_ID}" | tail -1`;

my( $tmp1, $tmp2, $tmp3, $tmp4 ) = $dev_info =~ /^(\[.*\])\s(\w+)\s(.*?)\s(.*?)\:/;

# maps usblp devices
if (my( $dev_num ) = $tmp4 =~ /^usblp(\d+)$/) {

  if (-e "/dev/usb_lp_printer") {
    unlink "/dev/usb_lp_printer";
  }

  my $cmd = "ln -s /dev/usb/lp".$dev_num." /dev/usb_lp_printer";
  mylog("COMMAND: $cmd");
  system($cmd);
}
else {
  mylog("COULDN'T BUILD COMMAND... ($ENV{ID_VENDOR_ID}:$ENV{ID_MODEL_ID})");
}


sub mylog {
  my $m = shift;

  if ($LOG) {
    open(F, ">> /tmp/usb_log.txt");
    print F "$m\n";
    close(F);
  }
}

