use DBI;
use Encode;
use Encode::Locale;
-use POSIX;
my $BAD = 0;
FROM odin_pastebin WHERE owner = ?
ORDER BY stamp", undef, $Odin::WHO)}) {
my ($tag, $stamp, $lang, $title) = @$r;
- my $t = strftime "%Y-%m-%d %H:%M:%S %z", localtime $stamp;
- printf "%-25s %-12s %-16s %s\n",
- $t, $tag, $lang, encode locale => $title;
+ Odin::print_columns Odin::fmt_time $stamp => 25,
+ $tag => 12, $lang => 16, (encode locale => $title) => 0;
}
} elsif ($op eq "new") {
my $op = Odin::OptParse->new(@ARGV);
use Odin;
use DBI;
-use POSIX;
Odin::cmdline_who;
FROM odin_shorturl WHERE owner = ?
ORDER BY stamp", undef, $Odin::WHO)}) {
my ($tag, $stamp, $url) = @$r;
- my $t = strftime "%Y-%m-%d %H:%M:%S %z", localtime $stamp;
- printf "%-25s %-12s %s\n", $t, $tag, $url;
+ Odin::print_columns Odin::fmt_time $stamp => 25, $tag => 12, $url =>0;
}
} elsif ($op eq "new") {
@ARGV == 1 or Odin::fail "usage: new URL";
use DBI;
use Digest::SHA qw(sha256_hex);
use MIME::Base64;
+use POSIX;
###--------------------------------------------------------------------------
### Early utilities.
return lc $s;
}
+sub print_columns (@) {
+ my @col = reverse @_;
+ my @fmt = ();
+ my @val = ();
+ while (@col && $col[1] eq "") { splice @col, 0, 2; }
+ my ($wd, $v) = splice @col, 0, 2;
+ push @fmt, "%s"; push @val, $v;
+ while (@col) {
+ my ($wd, $v) = splice @col, 0, 2;
+ push @fmt, "%-${wd}s";
+ push @val, $v;
+ }
+ printf join(" ", reverse @fmt) . "\n", reverse @val;
+}
+
+sub fmt_time ($) {
+ my ($t) = @_;
+ return $t == -1 ? "--" : strftime "%Y-%m-%d %H:%M:%S %z", localtime $t;
+}
+
###--------------------------------------------------------------------------
### Database utilities.