#!/usr/bin/perl # $Id: add-memo,v 3.1 2002/02/08 13:55:59 arensb Exp $ use strict; use Palm::Memo; use vars qw( $category $fname $pdb $cat_id $memo_text ); # Set default values $category = undef; # Default category to add to: "Unfiled" $cat_id = 0; # Default category index is 0 $fname = "$ENV{HOME}/.palm/backup/MemoDB.pdb"; # Default file to modify # Parse command-line arguments # XXX - Ought to read ~/.add-memo.args or some such: this should # contain the default command-line arguments. read it, split into # arguments, and prepend to @ARGV. Then continue as below. while ($ARGV[0] =~ /^-./) { my $arg = shift; if ($arg eq "-h" or $arg eq "-help" or $arg eq "--help") { &usage; exit 0; } if ($arg eq "-c") # Set category { $category = shift; if (!defined($category)) { print STDERR "Error: -c argument requires an argument.\n"; &usage; exit 1; } next; } if ($arg eq "-f") # Specify PDB file { $fname = shift; if (!defined($fname)) { print STDERR "Error: -f argument requires an argument.\n"; &usage; exit 1; } next; } } $pdb = new Palm::PDB; $pdb->Load($fname); # Given a category name, set $cat_id to its index. if ($category eq "") { # No category specified. Default to "Unfiled" $cat_id = 0; } else { # Find the named category my $i; for ($i = 0; $i <= 16; $i++) { if ($pdb->{appinfo}{categories}[$i]{name} eq $category) { $cat_id = $i; last; } } if ($i >= 16) { # No such category print STDERR "Warning: can't find category \"$category\".\n", "Defaulting to \"Unfiled\".\n"; } } $memo_text = ""; # This loop might iterate over several files while (<>) { # XXX - If input file is STDIN, perhaps ought to print a # message saying to hit <Ctrl-D> at EOF. Then again, that's # not the Unix way. $memo_text .= $_; if (eof(ARGV)) { # End of current file. Append the current record to # the PDB, and reset $memo_text for the next file. my $record; $record = $pdb->append_Record; $record->{data} = $memo_text; $record->{category} = $cat_id; $memo_text = ""; } } $pdb->Write($fname); # usage # Print a usage message sub usage { print <<EOT; Usage: $0 [options] [files] Options: -h Help -c category Category to add to -f fname PDB file to modify EOT }