From 80b38b5f6fd48b00afef9880c2700e721b7313eb Mon Sep 17 00:00:00 2001 From: TLINDEN Date: Fri, 10 Feb 2012 20:32:35 +0100 Subject: [PATCH] - --- Makefile.old | 757 --------------- blib/arch/auto/NOTEDB/.exists | 0 blib/lib/.exists | 0 blib/lib/NOTEDB.pm | 305 ------ blib/lib/NOTEDB/README | 7 - blib/lib/NOTEDB/binary.pm | 487 ---------- blib/lib/NOTEDB/dbm.pm | 269 ------ blib/lib/NOTEDB/dumper.pm | 371 -------- blib/lib/NOTEDB/general.pm | 408 -------- blib/lib/NOTEDB/mysql.pm | 425 --------- blib/lib/NOTEDB/text.pm | 358 ------- blib/lib/auto/NOTEDB/.exists | 0 blib/lib/note.pod | 528 ----------- blib/man3/.exists | 0 blib/man3/NOTEDB::binary.3pm | 224 ----- blib/man3/NOTEDB::dbm.3pm | 202 ---- blib/man3/NOTEDB::dumper.3pm | 221 ----- blib/man3/NOTEDB::general.3pm | 221 ----- blib/man3/NOTEDB::mysql.3pm | 215 ----- blib/man3/NOTEDB::text.3pm | 221 ----- blib/man3/note.3pm | 566 ----------- blib/script/.exists | 0 blib/script/note | 1671 --------------------------------- 23 files changed, 7456 deletions(-) delete mode 100644 Makefile.old delete mode 100644 blib/arch/auto/NOTEDB/.exists delete mode 100644 blib/lib/.exists delete mode 100644 blib/lib/NOTEDB.pm delete mode 100644 blib/lib/NOTEDB/README delete mode 100644 blib/lib/NOTEDB/binary.pm delete mode 100644 blib/lib/NOTEDB/dbm.pm delete mode 100644 blib/lib/NOTEDB/dumper.pm delete mode 100644 blib/lib/NOTEDB/general.pm delete mode 100644 blib/lib/NOTEDB/mysql.pm delete mode 100644 blib/lib/NOTEDB/text.pm delete mode 100644 blib/lib/auto/NOTEDB/.exists delete mode 100644 blib/lib/note.pod delete mode 100644 blib/man3/.exists delete mode 100644 blib/man3/NOTEDB::binary.3pm delete mode 100644 blib/man3/NOTEDB::dbm.3pm delete mode 100644 blib/man3/NOTEDB::dumper.3pm delete mode 100644 blib/man3/NOTEDB::general.3pm delete mode 100644 blib/man3/NOTEDB::mysql.3pm delete mode 100644 blib/man3/NOTEDB::text.3pm delete mode 100644 blib/man3/note.3pm delete mode 100644 blib/script/.exists delete mode 100755 blib/script/note diff --git a/Makefile.old b/Makefile.old deleted file mode 100644 index a6913e6..0000000 --- a/Makefile.old +++ /dev/null @@ -1,757 +0,0 @@ -# This Makefile is for the NOTEDB extension to perl. -# -# It was generated automatically by MakeMaker version -# 6.17 (Revision: 1.133) from the contents of -# Makefile.PL. Don't edit this file, edit Makefile.PL instead. -# -# ANY CHANGES MADE HERE WILL BE LOST! -# -# MakeMaker ARGV: () -# -# MakeMaker Parameters: - -# EXE_FILES => [q[bin/note]] -# NAME => q[NOTEDB] -# VERSION_FROM => q[NOTEDB.pm] - -# --- MakeMaker post_initialize section: - - -# --- MakeMaker const_config section: - -# These definitions are from config.sh (via /usr/lib/perl/5.8/Config.pm) - -# They may have been overridden via Makefile.PL or on the command line -AR = ar -CC = cc -CCCDLFLAGS = -fPIC -CCDLFLAGS = -rdynamic -DLEXT = so -DLSRC = dl_dlopen.xs -LD = cc -LDDLFLAGS = -shared -L/usr/local/lib -LDFLAGS = -L/usr/local/lib -LIBC = /lib/libc-2.3.2.so -LIB_EXT = .a -OBJ_EXT = .o -OSNAME = linux -OSVERS = 2.4.22-xfs+ti1211 -RANLIB = : -SITELIBEXP = /usr/local/share/perl/5.8.3 -SITEARCHEXP = /usr/local/lib/perl/5.8.3 -SO = so -EXE_EXT = -FULL_AR = /usr/bin/ar -VENDORARCHEXP = /usr/lib/perl5 -VENDORLIBEXP = /usr/share/perl5 - - -# --- MakeMaker constants section: -AR_STATIC_ARGS = cr -DIRFILESEP = / -NAME = NOTEDB -NAME_SYM = NOTEDB -VERSION = 1.3 -VERSION_MACRO = VERSION -VERSION_SYM = 1_3 -DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" -XS_VERSION = 1.3 -XS_VERSION_MACRO = XS_VERSION -XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" -INST_ARCHLIB = blib/arch -INST_SCRIPT = blib/script -INST_BIN = blib/bin -INST_LIB = blib/lib -INST_MAN1DIR = blib/man1 -INST_MAN3DIR = blib/man3 -MAN1EXT = 1p -MAN3EXT = 3pm -INSTALLDIRS = site -DESTDIR = -PREFIX = /usr -PERLPREFIX = $(PREFIX) -SITEPREFIX = $(PREFIX)/local -VENDORPREFIX = $(PREFIX) -INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.8 -DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) -INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.8.3 -DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) -INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5 -DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) -INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.8 -DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) -INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.8.3 -DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) -INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5 -DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) -INSTALLBIN = $(PERLPREFIX)/bin -DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) -INSTALLSITEBIN = $(SITEPREFIX)/bin -DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) -INSTALLVENDORBIN = $(VENDORPREFIX)/bin -DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) -INSTALLSCRIPT = $(PERLPREFIX)/bin -DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) -INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1 -DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) -INSTALLSITEMAN1DIR = $(SITEPREFIX)/man/man1 -DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) -INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1 -DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) -INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3 -DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) -INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3 -DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) -INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3 -DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) -PERL_LIB = /usr/share/perl/5.8 -PERL_ARCHLIB = /usr/lib/perl/5.8 -LIBPERL_A = libperl.a -FIRST_MAKEFILE = Makefile -MAKEFILE_OLD = $(FIRST_MAKEFILE).old -MAKE_APERL_FILE = $(FIRST_MAKEFILE).aperl -PERLMAINCC = $(CC) -PERL_INC = /usr/lib/perl/5.8/CORE -PERL = /usr/bin/perl -FULLPERL = /usr/bin/perl -ABSPERL = $(PERL) -PERLRUN = $(PERL) -FULLPERLRUN = $(FULLPERL) -ABSPERLRUN = $(ABSPERL) -PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" -FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" -ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" -PERL_CORE = 0 -PERM_RW = 644 -PERM_RWX = 755 - -MAKEMAKER = /usr/share/perl/5.8/ExtUtils/MakeMaker.pm -MM_VERSION = 6.17 -MM_REVISION = 1.133 - -# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). -# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) -# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) -# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. -FULLEXT = NOTEDB -BASEEXT = NOTEDB -PARENT_NAME = -DLBASE = $(BASEEXT) -VERSION_FROM = NOTEDB.pm -OBJECT = -LDFROM = $(OBJECT) -LINKTYPE = dynamic - -# Handy lists of source code files: -XS_FILES = -C_FILES = -O_FILES = -H_FILES = -MAN1PODS = -MAN3PODS = NOTEDB/binary.pm \ - NOTEDB/dbm.pm \ - NOTEDB/mysql.pm \ - note.pod - -# Where is the Config information that we are using/depend on -CONFIGDEP = $(PERL_ARCHLIB)$(DIRFILESEP)Config.pm $(PERL_INC)$(DIRFILESEP)config.h - -# Where to build things -INST_LIBDIR = $(INST_LIB) -INST_ARCHLIBDIR = $(INST_ARCHLIB) - -INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) -INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) - -INST_STATIC = -INST_DYNAMIC = -INST_BOOT = - -# Extra linker info -EXPORT_LIST = -PERL_ARCHIVE = -PERL_ARCHIVE_AFTER = - - -TO_INST_PM = NOTEDB.pm \ - NOTEDB/README \ - NOTEDB/binary.pm \ - NOTEDB/dbm.pm \ - NOTEDB/mysql.pm \ - note.pod - -PM_TO_BLIB = NOTEDB/README \ - $(INST_LIB)/NOTEDB/README \ - NOTEDB/mysql.pm \ - $(INST_LIB)/NOTEDB/mysql.pm \ - NOTEDB/dbm.pm \ - $(INST_LIB)/NOTEDB/dbm.pm \ - NOTEDB/binary.pm \ - $(INST_LIB)/NOTEDB/binary.pm \ - NOTEDB.pm \ - $(INST_LIB)/NOTEDB.pm \ - note.pod \ - $(INST_LIB)/note.pod - - -# --- MakeMaker platform_constants section: -MM_Unix_VERSION = 1.42 -PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc - - -# --- MakeMaker tool_autosplit section: -# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto -AUTOSPLITFILE = $(PERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)' - - - -# --- MakeMaker tool_xsubpp section: - - -# --- MakeMaker tools_other section: -SHELL = /bin/sh -CHMOD = chmod -CP = cp -MV = mv -NOOP = $(SHELL) -c true -NOECHO = @ -RM_F = rm -f -RM_RF = rm -rf -TEST_F = test -f -TOUCH = touch -UMASK_NULL = umask 0 -DEV_NULL = > /dev/null 2>&1 -MKPATH = $(PERLRUN) "-MExtUtils::Command" -e mkpath -EQUALIZE_TIMESTAMP = $(PERLRUN) "-MExtUtils::Command" -e eqtime -ECHO = echo -ECHO_N = echo -n -UNINST = 0 -VERBINST = 0 -MOD_INSTALL = $(PERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');' -DOC_INSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e perllocal_install -UNINSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e uninstall -WARN_IF_OLD_PACKLIST = $(PERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist - - -# --- MakeMaker makemakerdflt section: -makemakerdflt: all - $(NOECHO) $(NOOP) - - -# --- MakeMaker dist section: -TAR = tar -TARFLAGS = cvf -ZIP = zip -ZIPFLAGS = -r -COMPRESS = gzip --best -SUFFIX = .gz -SHAR = shar -PREOP = $(NOECHO) $(NOOP) -POSTOP = $(NOECHO) $(NOOP) -TO_UNIX = $(NOECHO) $(NOOP) -CI = ci -u -RCS_LABEL = rcs -Nv$(VERSION_SYM): -q -DIST_CP = best -DIST_DEFAULT = tardist -DISTNAME = NOTEDB -DISTVNAME = NOTEDB-1.3 - - -# --- MakeMaker macro section: - - -# --- MakeMaker depend section: - - -# --- MakeMaker cflags section: - - -# --- MakeMaker const_loadlibs section: - - -# --- MakeMaker const_cccmd section: - - -# --- MakeMaker post_constants section: - - -# --- MakeMaker pasthru section: - -PASTHRU = LIB="$(LIB)"\ - LIBPERL_A="$(LIBPERL_A)"\ - LINKTYPE="$(LINKTYPE)"\ - PREFIX="$(PREFIX)"\ - OPTIMIZE="$(OPTIMIZE)"\ - PASTHRU_DEFINE="$(PASTHRU_DEFINE)"\ - PASTHRU_INC="$(PASTHRU_INC)" - - -# --- MakeMaker special_targets section: -.SUFFIXES: .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) - -.PHONY: all config static dynamic test linkext manifest - - - -# --- MakeMaker c_o section: - - -# --- MakeMaker xs_c section: - - -# --- MakeMaker xs_o section: - - -# --- MakeMaker top_targets section: -all :: pure_all manifypods - $(NOECHO) $(NOOP) - - -pure_all :: config pm_to_blib subdirs linkext - $(NOECHO) $(NOOP) - -subdirs :: $(MYEXTLIB) - $(NOECHO) $(NOOP) - -config :: $(FIRST_MAKEFILE) $(INST_LIBDIR)$(DIRFILESEP).exists - $(NOECHO) $(NOOP) - -config :: $(INST_ARCHAUTODIR)$(DIRFILESEP).exists - $(NOECHO) $(NOOP) - -config :: $(INST_AUTODIR)$(DIRFILESEP).exists - $(NOECHO) $(NOOP) - -$(INST_AUTODIR)/.exists :: /usr/lib/perl/5.8/CORE/perl.h - $(NOECHO) $(MKPATH) $(INST_AUTODIR) - $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_AUTODIR)/.exists - - -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_AUTODIR) - -$(INST_LIBDIR)/.exists :: /usr/lib/perl/5.8/CORE/perl.h - $(NOECHO) $(MKPATH) $(INST_LIBDIR) - $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_LIBDIR)/.exists - - -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_LIBDIR) - -$(INST_ARCHAUTODIR)/.exists :: /usr/lib/perl/5.8/CORE/perl.h - $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) - $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_ARCHAUTODIR)/.exists - - -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR) - -config :: $(INST_MAN3DIR)$(DIRFILESEP).exists - $(NOECHO) $(NOOP) - - -$(INST_MAN3DIR)/.exists :: /usr/lib/perl/5.8/CORE/perl.h - $(NOECHO) $(MKPATH) $(INST_MAN3DIR) - $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_MAN3DIR)/.exists - - -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_MAN3DIR) - -help: - perldoc ExtUtils::MakeMaker - - -# --- MakeMaker linkext section: - -linkext :: $(LINKTYPE) - $(NOECHO) $(NOOP) - - -# --- MakeMaker dlsyms section: - - -# --- MakeMaker dynamic section: - -dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT) - $(NOECHO) $(NOOP) - - -# --- MakeMaker dynamic_bs section: - -BOOTSTRAP = - - -# --- MakeMaker dynamic_lib section: - - -# --- MakeMaker static section: - -## $(INST_PM) has been moved to the all: target. -## It remains here for awhile to allow for old usage: "make static" -static :: $(FIRST_MAKEFILE) $(INST_STATIC) - $(NOECHO) $(NOOP) - - -# --- MakeMaker static_lib section: - - -# --- MakeMaker manifypods section: - -POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" -POD2MAN = $(POD2MAN_EXE) - - -manifypods : pure_all \ - NOTEDB/mysql.pm \ - NOTEDB/dbm.pm \ - NOTEDB/binary.pm \ - note.pod \ - NOTEDB/mysql.pm \ - NOTEDB/dbm.pm \ - NOTEDB/binary.pm \ - note.pod - $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW)\ - NOTEDB/mysql.pm $(INST_MAN3DIR)/NOTEDB::mysql.$(MAN3EXT) \ - NOTEDB/dbm.pm $(INST_MAN3DIR)/NOTEDB::dbm.$(MAN3EXT) \ - NOTEDB/binary.pm $(INST_MAN3DIR)/NOTEDB::binary.$(MAN3EXT) \ - note.pod $(INST_MAN3DIR)/note.$(MAN3EXT) - - - - -# --- MakeMaker processPL section: - - -# --- MakeMaker installbin section: - -$(INST_SCRIPT)/.exists :: /usr/lib/perl/5.8/CORE/perl.h - $(NOECHO) $(MKPATH) $(INST_SCRIPT) - $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_SCRIPT)/.exists - - -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_SCRIPT) - -EXE_FILES = bin/note - -FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)" - -pure_all :: $(INST_SCRIPT)/note - $(NOECHO) $(NOOP) - -realclean :: - $(RM_F) $(INST_SCRIPT)/note - -$(INST_SCRIPT)/note: bin/note $(FIRST_MAKEFILE) $(INST_SCRIPT)/.exists - $(NOECHO) $(RM_F) $(INST_SCRIPT)/note - $(CP) bin/note $(INST_SCRIPT)/note - $(FIXIN) $(INST_SCRIPT)/note - -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_SCRIPT)/note - - -# --- MakeMaker subdirs section: - -# none - -# --- MakeMaker clean_subdirs section: -clean_subdirs : - $(NOECHO) $(NOOP) - - -# --- MakeMaker clean section: - -# Delete temporary files but do not touch installed files. We don't delete -# the Makefile here so a later make realclean still has a makefile to use. - -clean :: clean_subdirs - -$(RM_RF) ./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all $(INST_ARCHAUTODIR)/extralibs.ld perlmain.c tmon.out mon.out so_locations pm_to_blib *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl perl$(EXE_EXT) $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def lib$(BASEEXT).def $(BASEEXT).exp $(BASEEXT).x core core.*perl.*.? *perl.core core.[0-9] core.[0-9][0-9] core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9][0-9] - -$(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) - - -# --- MakeMaker realclean_subdirs section: -realclean_subdirs : - $(NOECHO) $(NOOP) - - -# --- MakeMaker realclean section: - -# Delete temporary files (via clean) and also delete installed files -realclean purge :: clean realclean_subdirs - $(RM_RF) $(INST_AUTODIR) $(INST_ARCHAUTODIR) - $(RM_RF) $(DISTVNAME) - $(RM_F) $(INST_LIB)/NOTEDB/mysql.pm $(INST_LIB)/NOTEDB/binary.pm $(MAKEFILE_OLD) $(INST_LIB)/NOTEDB.pm $(INST_LIB)/note.pod $(INST_LIB)/NOTEDB/README $(INST_LIB)/NOTEDB/dbm.pm $(FIRST_MAKEFILE) - - -# --- MakeMaker metafile section: -metafile : - $(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META.yml - $(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#' >> META.yml - $(NOECHO) $(ECHO) 'name: NOTEDB' >> META.yml - $(NOECHO) $(ECHO) 'version: 1.3' >> META.yml - $(NOECHO) $(ECHO) 'version_from: NOTEDB.pm' >> META.yml - $(NOECHO) $(ECHO) 'installdirs: site' >> META.yml - $(NOECHO) $(ECHO) 'requires:' >> META.yml - $(NOECHO) $(ECHO) '' >> META.yml - $(NOECHO) $(ECHO) 'distribution_type: module' >> META.yml - $(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.17' >> META.yml - - -# --- MakeMaker metafile_addtomanifest section: -metafile_addtomanifest: - $(NOECHO) $(PERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \ - -e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"' - - -# --- MakeMaker dist_basics section: -distclean :: realclean distcheck - $(NOECHO) $(NOOP) - -distcheck : - $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck - -skipcheck : - $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck - -manifest : - $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest - -veryclean : realclean - $(RM_F) *~ *.orig */*~ */*.orig - - - -# --- MakeMaker dist_core section: - -dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE) - $(NOECHO) $(PERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \ - -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' - -tardist : $(DISTVNAME).tar$(SUFFIX) - $(NOECHO) $(NOOP) - -uutardist : $(DISTVNAME).tar$(SUFFIX) - uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu - -$(DISTVNAME).tar$(SUFFIX) : distdir - $(PREOP) - $(TO_UNIX) - $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME) - $(RM_RF) $(DISTVNAME) - $(COMPRESS) $(DISTVNAME).tar - $(POSTOP) - -zipdist : $(DISTVNAME).zip - $(NOECHO) $(NOOP) - -$(DISTVNAME).zip : distdir - $(PREOP) - $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME) - $(RM_RF) $(DISTVNAME) - $(POSTOP) - -shdist : distdir - $(PREOP) - $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar - $(RM_RF) $(DISTVNAME) - $(POSTOP) - - -# --- MakeMaker distdir section: -distdir : metafile metafile_addtomanifest - $(RM_RF) $(DISTVNAME) - $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \ - -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');" - - - -# --- MakeMaker dist_test section: - -disttest : distdir - cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL - cd $(DISTVNAME) && $(MAKE) $(PASTHRU) - cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) - - -# --- MakeMaker dist_ci section: - -ci : - $(PERLRUN) "-MExtUtils::Manifest=maniread" \ - -e "@all = keys %{ maniread() };" \ - -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \ - -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});" - - -# --- MakeMaker install section: - -install :: all pure_install doc_install - -install_perl :: all pure_perl_install doc_perl_install - -install_site :: all pure_site_install doc_site_install - -install_vendor :: all pure_vendor_install doc_vendor_install - -pure_install :: pure_$(INSTALLDIRS)_install - -doc_install :: doc_$(INSTALLDIRS)_install - -pure__install : pure_site_install - $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site - -doc__install : doc_site_install - $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site - -pure_perl_install :: - $(NOECHO) umask 022; $(MOD_INSTALL) \ - $(INST_LIB) $(DESTINSTALLPRIVLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ - $(INST_BIN) $(DESTINSTALLBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) - $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - $(SITEARCHEXP)/auto/$(FULLEXT) - - -pure_site_install :: - $(NOECHO) umask 02; $(MOD_INSTALL) \ - read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \ - write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \ - $(INST_LIB) $(DESTINSTALLSITELIB) \ - $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ - $(INST_BIN) $(DESTINSTALLSITEBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) - $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - $(PERL_ARCHLIB)/auto/$(FULLEXT) - -pure_vendor_install :: - $(NOECHO) umask 022; $(MOD_INSTALL) \ - $(INST_LIB) $(DESTINSTALLVENDORLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ - $(INST_BIN) $(DESTINSTALLVENDORBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) - -doc_perl_install :: - -doc_site_install :: - $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod - -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH) - -$(NOECHO) umask 02; $(DOC_INSTALL) \ - "Module" "$(NAME)" \ - "installed into" "$(INSTALLSITELIB)" \ - LINKTYPE "$(LINKTYPE)" \ - VERSION "$(VERSION)" \ - EXE_FILES "$(EXE_FILES)" \ - >> $(DESTINSTALLSITEARCH)/perllocal.pod - -doc_vendor_install :: - - -uninstall :: uninstall_from_$(INSTALLDIRS)dirs - -uninstall_from_perldirs :: - $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist - -uninstall_from_sitedirs :: - $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist - -uninstall_from_vendordirs :: - $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist - - -# --- MakeMaker force section: -# Phony target to force checking subdirectories. -FORCE: - $(NOECHO) $(NOOP) - - -# --- MakeMaker perldepend section: - - -# --- MakeMaker makefile section: - -# We take a very conservative approach here, but it's worth it. -# We move Makefile to Makefile.old here to avoid gnu make looping. -$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) - $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" - $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." - $(NOECHO) $(RM_F) $(MAKEFILE_OLD) - $(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) - -$(MAKE) -f $(MAKEFILE_OLD) clean $(DEV_NULL) || $(NOOP) - $(PERLRUN) Makefile.PL - $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" - $(NOECHO) $(ECHO) "==> Please rerun the make command. <==" - false - - - -# --- MakeMaker staticmake section: - -# --- MakeMaker makeaperl section --- -MAP_TARGET = perl -FULLPERL = /usr/bin/perl - -$(MAP_TARGET) :: static $(MAKE_APERL_FILE) - $(MAKE) -f $(MAKE_APERL_FILE) $@ - -$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) - $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET) - $(NOECHO) $(PERLRUNINST) \ - Makefile.PL DIR= \ - MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ - MAKEAPERL=1 NORECURS=1 CCCDLFLAGS= - - -# --- MakeMaker test section: - -TEST_VERBOSE=0 -TEST_TYPE=test_$(LINKTYPE) -TEST_FILE = test.pl -TEST_FILES = -TESTDB_SW = -d - -testdb :: testdb_$(LINKTYPE) - -test :: $(TEST_TYPE) - $(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.' - -test_dynamic :: pure_all - -testdb_dynamic :: pure_all - PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) - -test_ : test_dynamic - -test_static :: test_dynamic -testdb_static :: testdb_dynamic - - -# --- MakeMaker ppd section: -# Creates a PPD (Perl Package Description) for a binary distribution. -ppd: - $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' $(DISTNAME)' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) '' >> $(DISTNAME).ppd - - -# --- MakeMaker pm_to_blib section: - -pm_to_blib: $(TO_INST_PM) - $(NOECHO) $(PERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')'\ - NOTEDB/README $(INST_LIB)/NOTEDB/README \ - NOTEDB/mysql.pm $(INST_LIB)/NOTEDB/mysql.pm \ - NOTEDB/dbm.pm $(INST_LIB)/NOTEDB/dbm.pm \ - NOTEDB/binary.pm $(INST_LIB)/NOTEDB/binary.pm \ - NOTEDB.pm $(INST_LIB)/NOTEDB.pm \ - note.pod $(INST_LIB)/note.pod - $(NOECHO) $(TOUCH) $@ - -# --- MakeMaker selfdocument section: - - -# --- MakeMaker postamble section: - - -# End. diff --git a/blib/arch/auto/NOTEDB/.exists b/blib/arch/auto/NOTEDB/.exists deleted file mode 100644 index e69de29..0000000 diff --git a/blib/lib/.exists b/blib/lib/.exists deleted file mode 100644 index e69de29..0000000 diff --git a/blib/lib/NOTEDB.pm b/blib/lib/NOTEDB.pm deleted file mode 100644 index c561e3c..0000000 --- a/blib/lib/NOTEDB.pm +++ /dev/null @@ -1,305 +0,0 @@ -# -# this is a generic module, used by note database -# backend modules. -# -# Copyright (c) 2000-2004 Thomas Linden - - -package NOTEDB; - -use Exporter (); -use vars qw(@ISA @EXPORT $crypt_supported); - -$NOTEDB::VERSION = "1.31"; - -BEGIN { - # make sure, it works, otherwise encryption - # is not supported on this system! - eval { require Crypt::CBC; }; - if($@) { - $NOTEDB::crypt_supported = 0; - } - else { - $NOTEDB::crypt_supported = 1; - } -} - - -sub no_crypt { - $NOTEDB::crypt_supported = 0; -} - - -sub use_crypt { - my($this,$key,$method) = @_; - my($cipher); - if($NOTEDB::crypt_supported == 1) { - eval { - $cipher = new Crypt::CBC($key, $method); - }; - if($@) { - print "warning: Crypt::$method not supported by system!\n"; - $NOTEDB::crypt_supported = 0; - } - else { - $this->{cipher} = $cipher; - } - } - else{ - print "warning: Crypt::CBC not supported by system!\n"; - } -} - - -sub use_cache { - # - # this sub turns on cache support - # - my $this = shift; - $this->{use_cache} = 1; - $this->{changed} = 1; -} - -sub cache { - # - # store the whole db as hash - # if use_cache is turned on - # - my $this = shift; - if ($this->{use_cache}) { - my %res = @_; - %{$this->{cache}} = %res; - } -} - -sub unchanged { - # - # return true if $this->{changed} is true, this will - # be set to true by writing subs using $this->changed(). - # - my $this = shift; - return 0 if(!$this->{use_cache}); - if ($this->{changed}) { - $this->{changed} = 0; - return 0; - } - else { - print "%\n"; - return 1; - } -} - -sub changed { - # - # turn on $this->{changed} - # this will be used by update or create subs. - # - my $this = shift; - $this->{changed} = 1; -} - - -sub generate_search { - # - # get user input and create perlcode ready for eval - # sample input: - # "ann.a OR eg???on AND u*do$" - # resulting output: - # "$match = 1 if(/ann\.a/i or /eg...on/i and /u.*do\$/i ); - # - my($this, $string) = @_; - - my $case = "i"; - - if ($string =~ /^\/.+?\/$/) { - return $string; - } - elsif (!$string) { - return "/^/"; - } - - # we will get a / in front of the first word too! - $string = " " . $string . " "; - - # check for apostrophs - $string =~ s/(?<=\s)(\(??)("[^"]+"|\S+)(\)??)(?=\s)/$1 . $this->check_exact($2) . $3/ge; - - # remove odd spaces infront of and after »and« and »or« - $string =~ s/\s\s*(AND|OR)\s\s*/ $1 /g; - - # remove odd spaces infront of »(« and after »)« - $string =~ s/(\s*\()/\(/g; - $string =~ s/(\)\s*)/\)/g; - - # remove first and last space so it will not masked! - $string =~ s/^\s//; - $string =~ s/\s$//; - - # mask spaces if not infront of or after »and« and »or« - $string =~ s/(?check_or($1, $case) /ge; - - # remove slashes on »and« and »or« - $string =~ s/\/(and|or)\/$case/$1/g; - - # remove spaces inside /string/ constructs - $string =~ s/(? '.*', - '?' => '.', - '[' => '[', - ']' => ']', - '+' => '\+', - '.' => '\.', - '$' => '\$', - '@' => '\@', - '/' => '\/', - '|' => '\|', - '}' => '\}', - '{' => '\{', - ); - - my %escapes = ( - '*' => '\*', - '?' => '\?', - '[' => '[', - ']' => ']', - '+' => '\+', - '.' => '\.', - '$' => '\$', - '@' => '\@', - '(' => '\(', - ')' => '\)', - '/' => '\/', - '|' => '\|', - '}' => '\}', - '{' => '\{', - ); - - # mask backslash - $str =~ s/\\/\\\\/g; - - - if ($str =~ /^"/ && $str =~ /"$/) { - # mask bracket-constructs - $str =~ s/(.)/$escapes{$1} || "$1"/ge; - } - else { - $str =~ s/(.)/$wildcards{$1} || "$1"/ge; - } - - $str =~ s/^"//; - $str =~ s/"$//; - - # mask spaces - $str =~ s/\s/\\s/g; - return $str; -} - - - - -sub lock { - my ($this) = @_; - - if (-e $this->{LOCKFILE}) { - open LOCK, "<$this->{LOCKFILE}" or die "could not open $this->{LOCKFILE}: $!\n"; - my $data = ; - close LOCK; - chomp $data; - print "-- waiting for lock by $data --\n"; - print "-- remove the lockfile if you are sure: \"$this->{LOCKFILE}\" --\n"; - } - - my $timeout = 60; - - eval { - local $SIG{ALRM} = sub { die "timeout" }; - local $SIG{INT} = sub { die "interrupted" }; - alarm $timeout - 2; - while (1) { - if (! -e $this->{LOCKFILE}) { - umask 022; - open LOCK, ">$this->{LOCKFILE}" or die "could not open $this->{LOCKFILE}: $!\n"; - flock LOCK, LOCK_EX; - - my $now = scalar localtime(); - print LOCK "$ENV{USER} since $now (PID: $$)\n"; - - flock LOCK, LOCK_UN; - close LOCK; - alarm 0; - return 0; - } - printf " %0d\r", $timeout; - $timeout--; - sleep 1; - } - }; - if($@) { - if ($@ =~ /^inter/) { - print " interrupted\n"; - } - else { - print $@; - print " timeout\n"; - } - return 1; - } - return 0; -} - -sub unlock { - my ($this) = @_; - unlink $this->{LOCKFILE}; -} - - - -1; diff --git a/blib/lib/NOTEDB/README b/blib/lib/NOTEDB/README deleted file mode 100644 index 447198c..0000000 --- a/blib/lib/NOTEDB/README +++ /dev/null @@ -1,7 +0,0 @@ -perl modules for note used as database backends. -the install.sh script will install both of them, -although you may only need one backend. Perhaps -other users on your system have oter ideas in mind... - -Therefore, please ignore these file. There is nothing -to edit or to do. Simply leave this directory :-) diff --git a/blib/lib/NOTEDB/binary.pm b/blib/lib/NOTEDB/binary.pm deleted file mode 100644 index 8ddabb9..0000000 --- a/blib/lib/NOTEDB/binary.pm +++ /dev/null @@ -1,487 +0,0 @@ -#!/usr/bin/perl -# $Id: binary.pm,v 1.3 2000/08/11 00:05:58 zarahg Exp $ -# Perl module for note -# binary database backend. see docu: perldoc NOTEDB::binary -# -package NOTEDB::binary; - -$NOTEDB::binary::VERSION = "1.10"; - -use strict; -#use Data::Dumper; -use IO::Seekable; -use File::Spec; -use Fcntl qw(LOCK_EX LOCK_UN); - -use NOTEDB; -use Exporter (); -use vars qw(@ISA @EXPORT); -@ISA = qw(NOTEDB Exporter); - - - - -sub new { - my($this, %param) = @_; - - my $class = ref($this) || $this; - my $self = {}; - bless($self,$class); - - $self->{NOTEDB} = $param{dbname} || File::Spec->catfile($ENV{HOME}, ".notedb"); - my $MAX_NOTE = $param{max_note} || 4096; - my $MAX_TIME = $param{max_time} || 64; - - if(! -e $self->{NOTEDB}) { - open(TT,">$self->{NOTEDB}") or die "Could not create $self->{NOTEDB}: $!\n"; - close (TT); - } - elsif(! -w $self->{NOTEDB}) { - print "$self->{NOTEDB} is not writable!\n"; - exit(1); - } - - - my $TYPEDEF = "i a$MAX_NOTE a$MAX_TIME"; - my $SIZEOF = length pack($TYPEDEF, () ); - - $self->{sizeof} = $SIZEOF; - $self->{typedef} = $TYPEDEF; - $self->{maxnote} = $MAX_NOTE; - $self->{LOCKFILE} = $self->{NOTEDB} . "~LOCK"; - - return $self; -} - - -sub DESTROY -{ - # clean the desk! -} - -sub version { - my $this = shift; - return $NOTEDB::binary::VERSION; -} - - - -sub set_del_all -{ - my $this = shift; - unlink $this->{NOTEDB}; - open(TT,">$this->{NOTEDB}") or die "Could not create $this->{NOTEDB}: $!\n"; - close (TT); -} - - -sub get_single { - my($this, $num) = @_; - my($address, $note, $date, $buffer, $n, $t, $buffer, ); - - open NOTE, "+<$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - - $address = ($num-1) * $this->{sizeof}; - seek(NOTE, $address, IO::Seekable::SEEK_SET); - read(NOTE, $buffer, $this->{sizeof}); - ($num, $n, $t) = unpack($this->{typedef}, $buffer); - - $note = $this->ude($n); - $date = $this->ude($t); - - flock NOTE, LOCK_UN; - close NOTE; - - return $note, $date; -} - - -sub get_all -{ - my $this = shift; - my($num, $note, $date, %res); - - if ($this->unchanged) { - return %{$this->{cache}}; - } - open NOTE, "+<$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - my($buffer, $t, $n); - seek(NOTE, 0, 0); # START FROM BEGINNING - while(read(NOTE, $buffer, $this->{sizeof})) { - ($num, $note, $date) = unpack($this->{typedef}, $buffer); - $t = $this->ude($date); - $n = $this->ude($note); - $res{$num}->{'note'} = $n; - $res{$num}->{'date'} = $t; - } - flock NOTE, LOCK_UN; - close NOTE; - - $this->cache(%res); - return %res; -} - -sub import_data { - my ($this, $data) = @_; - foreach my $num (keys %{$data}) { - my $pos = $this->get_nextnum(); - $this->set_edit($pos, $data->{$num}->{note}, $data->{$num}->{date}); - } -} - -sub get_nextnum -{ - my $this = shift; - my($num, $te, $me, $buffer); - - if ($this->unchanged) { - $num = 1; - foreach (keys %{$this->{cache}}) { - $num++; - } - return $num; - } - open NOTE, "+<$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - - seek(NOTE, 0, 0); # START FROM BEGINNING - while(read(NOTE, $buffer, $this->{sizeof})) { - ($num, $te, $me) = unpack($this->{typedef}, $buffer); - } - $num += 1; - flock NOTE, LOCK_UN; - close NOTE; - - return $num; -} - -sub get_search -{ - my($this, $searchstring) = @_; - my($buffer, $num, $note, $date, %res, $t, $n, $match); - - my $regex = $this->generate_search($searchstring); - eval $regex; - if ($@) { - print "invalid expression: \"$searchstring\"!\n"; - return; - } - $match = 0; - - if ($this->unchanged) { - foreach my $num (keys %{$this->{cache}}) { - $_ = $this->{cache}{$num}->{note}; - eval $regex; - if ($match) { - $res{$num}->{note} = $this->{cache}{$num}->{note}; - $res{$num}->{date} = $this->{cache}{$num}->{date} - } - $match = 0; - } - return %res; - } - - open NOTE, "+<$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - - seek(NOTE, 0, 0); # START FROM BEGINNING - while(read(NOTE, $buffer, $this->{sizeof})) { - ($num, $note, $date) = unpack($this->{typedef}, $buffer); - $n = $this->ude($note); - $t = $this->ude($date); - $_ = $n; - eval $regex; - if($match) - { - $res{$num}->{'note'} = $n; - $res{$num}->{'date'} = $t; - } - $match = 0; - } - flock NOTE, LOCK_UN; - close NOTE; - - return %res; -} - - - - -sub set_edit { - my($this, $num, $note, $date) = @_; - - $this->warn_if_too_big($note, $num); - - my $address = ($num -1 ) * $this->{sizeof}; - - open NOTE, "+<$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - - seek(NOTE, $address, IO::Seekable::SEEK_SET); - my $n = $this->uen($note); - my $t = $this->uen($date); - - my $buffer = pack($this->{typedef}, $num, $n, $t); - print NOTE $buffer; - - flock NOTE, LOCK_UN; - close NOTE; - - $this->changed; -} - - -sub set_new { - my($this, $num, $note, $date) = @_; - - $this->warn_if_too_big($note, $num); - - open NOTE, "+<$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - - seek(NOTE, 0, IO::Seekable::SEEK_END); # APPEND - my $n = $this->uen($note); - my $t = $this->uen($date); - my $buffer = pack($this->{typedef}, $num, $n, $t); - print NOTE $buffer; - - flock NOTE, LOCK_UN; - close NOTE; - - $this->changed; -} - - -sub set_del -{ - my($this, $num) = @_; - my(%orig, $note, $date, $T, $setnum, $buffer, $n, $N, $t); - - $setnum = 1; - - %orig = $this->get_all(); - return "ERROR" if (! exists $orig{$num}); - - delete $orig{$num}; - - # overwrite, but keep number! - open NOTE, ">$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - seek(NOTE, 0, 0); # START FROM BEGINNING - foreach $N (keys %orig) { - $n = $this->uen($orig{$N}->{'note'}); - $t = $this->uen($orig{$N}->{'date'}); - $buffer = pack( $this->{typedef}, $N, $n, $t); - # keep orig number, note have to call recount! - print NOTE $buffer; - seek(NOTE, 0, IO::Seekable::SEEK_END); - $setnum++; - } - flock NOTE, LOCK_UN; - close NOTE; - - $this->changed; - - return; -} - -sub set_recountnums -{ - my($this) = @_; - my(%orig, $note, $date, $T, $setnum, $buffer, $n, $N, $t); - - $setnum = 1; - %orig = $this->get_all(); - - open NOTE, ">$this->{NOTEDB}" or die "could not open $this->{NOTEDB}\n"; - flock NOTE, LOCK_EX; - seek(NOTE, 0, 0); # START FROM BEGINNING - - foreach $N (sort {$a <=> $b} keys %orig) { - $n = $this->uen($orig{$N}->{'note'}); - $t = $this->uen($orig{$N}->{'date'}); - $buffer = pack( $this->{typedef}, $setnum, $n, $t); - print NOTE $buffer; - seek(NOTE, 0, IO::Seekable::SEEK_END); - $setnum++; - } - flock NOTE, LOCK_UN; - close NOTE; - - $this->changed; - - return; -} - -sub uen -{ - my $this = shift; - my($T); - if($NOTEDB::crypt_supported == 1) { - eval { - $T = pack("u", $this->{cipher}->encrypt($_[0])); - }; - } - else { - $T = pack("u", $_[0]); - } - chomp $T; - - return $T; -} - -sub ude -{ - my $this = shift; - my($T); - if($NOTEDB::crypt_supported == 1) { - eval { - $T = $this->{cipher}->decrypt(unpack("u",$_[0])); - }; - } - else { - $T = unpack("u", $_[0]); - } - return $T; -} - - -sub warn_if_too_big { - my ($this, $note, $num) = @_; - - my $len = length($this->uen($note)); - - if ($len > $this->{maxnote}) { - # calculate the 30% uuencoding overhead - my $overhead = int(($this->{maxnote} / 100) * 28); - - # fetch what's left by driver - my $left = substr $note, $this->{maxnote} - $overhead; - - $left = "\n$left\n"; - $left =~ s/\n/\n> /gs; - - print STDERR "*** WARNING $this->{version} WARNING ***\n" - ."The driver encountered a string length problem with your\n" - ."note entry number $num. The entry is too long. Either shorten\n" - ."the entry or resize the database field for entries.\n\n" - ."The following data has been cut off the entry:\n" - ."\n$left\n\n"; - - my $copy = File::Spec->catfile($ENV{'HOME'}, "entry-$num.txt"); - open N, ">$copy" or die "Could not open $copy: $!\n"; - print N $note; - close N; - - print "*** Wrote the complete note entry number $num to file: $copy ***\n"; - } -} - -sub _retrieve { - my ($this) = @_; - my $file = $this->{dbname}; - if (-s $file) { - if ($this->changed() || $this->{unread}) { - my $fh = new FileHandle "<$this->{dbname}" or die "could not open $this->{dbname}\n"; - flock $fh, LOCK_EX; - - my %data = ParseConfig(-ConfigFile => $fh) or die "could not read to database: $!\n"; - - flock $fh, LOCK_UN; - $fh->close(); - - $this->{unread} = 0; - $this->{data} = \%data; - return %data; - } - else { - return %{$this->{data}}; - } - } - else { - return (); - } -} - - -1; # keep this! - -__END__ - -=head1 NAME - -NOTEDB::binary - module lib for accessing a notedb from perl - -=head1 SYNOPSIS - - # include the module - use NOTEDB; - - # create a new NOTEDB object - $db = new NOTEDB("binary", "/home/tom/.notedb", 4096, 24); - - # decide to use encryption - # $key is the cipher to use for encryption - # $method must be either Crypt::IDEA or Crypt::DES - # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. - $db->use_crypt($key,$method); - - # do not use encryption - # this is the default - $db->no_crypt; - - # get a single note - ($note, $date) = $db->get_single(1); - - # search for a certain note - %matching_notes = $db->get_search("somewhat"); - # format of returned hash: - #$matching_notes{$numberofnote}->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} - - # get all existing notes - %all_notes = $db->get_all(); - # format of returnes hash like the one from get_search above - - # get the next noteid available - $next_num = $db->get_nextnum(); - - # modify a certain note - $db->set_edit(1, "any text", "23.12.2000 10:33:02"); - - # create a new note - $db->set_new(5, "any new text", "23.12.2000 10:33:02"); - - # delete a certain note - $db->set_del(5); - - # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH - $db->use_crypt("passphrase", "CryptMethod"); - - # turn off encryption. This is the default. - $db->no_crypt(); - - -=head1 DESCRIPTION - -You can use this module for accessing a note database. There are currently -two versions of this module, one version for a SQL database and one for a -binary file (note's own database-format). -However, both versions provides identical interfaces, which means, you do -not need to change your code, if you want to switch to another database format. - -Currently, NOTEDB module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... - -=head1 USAGE - -please see the section SYNOPSIS, it says it all. - -=head1 AUTHOR - -Thomas Linden . - - -=cut diff --git a/blib/lib/NOTEDB/dbm.pm b/blib/lib/NOTEDB/dbm.pm deleted file mode 100644 index 7f6724f..0000000 --- a/blib/lib/NOTEDB/dbm.pm +++ /dev/null @@ -1,269 +0,0 @@ -#!/usr/bin/perl -# $Id: dbm.pm,v 1.3 2000/08/11 00:05:58 zarahg Exp $ -# Perl module for note -# DBM database backend. see docu: perldoc NOTEDB::dbm -# - -package NOTEDB::dbm; - -$NOTEDB::dbm::VERSION = "1.40"; - -use DB_File; -use NOTEDB; -use strict; -use Exporter (); -use vars qw(@ISA @EXPORT %note %date); -@ISA = qw(NOTEDB Exporter); - - - - - - -sub new -{ - my($this, %param) = @_; - my $class = ref($this) || $this; - my $self = {}; - bless($self,$class); - - my $notefile = "note.dbm"; - my $timefile = "date.dbm"; - my $dbm_dir = $param{directory} || File::Spec->catfile($ENV{HOME}, ".note_dbm"); - - if (! -d $dbm_dir) { - # try to make it - mkdir $dbm_dir || die "Could not create $dbm_dir: $!\n"; - } - - tie %note, "DB_File", "$dbm_dir/$notefile" || die "Could not tie $dbm_dir/$notefile: $!\n"; - tie %date, "DB_File", "$dbm_dir/$timefile" || die "Could not tie $dbm_dir/$timefile: $!\n"; - - $self->{LOCKFILE} = $param{dbname} . "~LOCK"; - - return $self; -} - - -sub DESTROY -{ - # clean the desk! - untie %note, %date; -} - -sub version { - my $this = shift; - return $this->{version}; -} - - -sub get_single -{ - my($this, $num) = @_; - my($note, $date); - return $this->ude ($note{$num}), $this->ude($date{$num}); -} - - -sub get_all -{ - my $this = shift; - my($num, $note, $date, %res, $real); - foreach $num (sort {$a <=> $b} keys %date) { - $res{$num}->{'note'} = $this->ude($note{$num}); - $res{$num}->{'date'} = $this->ude($date{$num}); - } - return %res; -} - -sub import_data { - my ($this, $data) = @_; - foreach my $num (keys %{$data}) { - my $pos = $this->get_nextnum(); - $note{$pos} = $this->ude($note{$num}->{note}); - $date{$pos} = $this->ude($date{$num}->{date}); - } -} - -sub get_nextnum -{ - my($this, $num); - foreach (sort {$a <=> $b} keys %date) { - $num = $_; - } - $num++; - return $num; -} - -sub get_search -{ - my($this, $searchstring) = @_; - my($num, $note, $date, %res, $match); - - my $regex = $this->generate_search($searchstring); - eval $regex; - if ($@) { - print "invalid expression: \"$searchstring\"!\n"; - return; - } - $match = 0; - foreach $num (sort {$a <=> $b} keys %date) { - $_ = $this->ude($note{$num}); - eval $regex; - if ($match) { - $res{$num}->{'note'} = $this->ude($note{$num}); - $res{$num}->{'date'} = $this->ude($date{$num}); - } - $match = 0; - } - - return %res; -} - - - -sub set_recountnums -{ - my $this = shift; - my(%Note, %Date, $num, $setnum); - $setnum = 1; - foreach $num (sort {$a <=> $b} keys %note) { - $Note{$setnum} = $note{$num}; - $Date{$setnum} = $date{$num}; - $setnum++; - } - %note = %Note; - %date = %Date; -} - - - -sub set_edit -{ - my($this, $num, $note, $date) = @_; - $note{$num} = $this->uen($note); - $date{$num} = $this->uen($date); -} - - -sub set_new -{ - my($this, $num, $note, $date) = @_; - $this->set_edit($num, $note, $date); # just the same thing -} - - -sub set_del -{ - my($this, $num) = @_; - my($note, $date, $T); - ($note, $date) = $this->get_single($num); - return "ERROR" if ($date !~ /^\d/); - delete $note{$num}; - delete $date{$num}; -} - -sub set_del_all -{ - my($this) = @_; - %note = (); - %date = (); - return; -} - -sub uen -{ - my $this = shift; - my($T); - if($NOTEDB::crypt_supported == 1) { - eval { - $T = pack("u", $this->{cipher}->encrypt($_[0])); - }; - } - else { - $T = $_[0]; - } - chomp $T; - return $T; -} - -sub ude -{ - my $this = shift; - my($T); - if($NOTEDB::crypt_supported == 1) { - eval { - $T = $this->{cipher}->decrypt(unpack("u",$_[0])) - }; - return $T; - } - else { - return $_[0]; - } -} - - - -1; # keep this! - -__END__ - -=head1 NAME - -NOTEDB::dbm - module lib for accessing a notedb from perl - -=head1 SYNOPSIS - - # include the module - use NOTEDB; - - # create a new NOTEDB object (the last 4 params are db table/field names) - $db = new NOTEDB("mysql","note","/home/user/.notedb/"); - - # get a single note - ($note, $date) = $db->get_single(1); - - # search for a certain note - %matching_notes = $db->get_search("somewhat"); - # format of returned hash: - #$matching_notes{$numberofnote}->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} - - # get all existing notes - %all_notes = $db->get_all(); - # format of returnes hash like the one from get_search above - - # get the next noteid available - $next_num = $db->get_nextnum(); - - # recount all noteids starting by 1 (usefull after deleting one!) - $db->set_recountnums(); - - # modify a certain note - $db->set_edit(1, "any text", "23.12.2000 10:33:02"); - - # create a new note - $db->set_new(5, "any new text", "23.12.2000 10:33:02"); - - # delete a certain note - $db->set_del(5); - -=head1 DESCRIPTION - -You can use this module for accessing a note database. This is the dbm module. -It uses the DB_FILE module to store it's data and it uses DBM files for tis purpose. - -Currently, NOTEDB module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... - -=head1 USAGE - -please see the section SYNOPSIS, it says it all. - -=head1 AUTHOR - -Thomas Linden . - - - -=cut diff --git a/blib/lib/NOTEDB/dumper.pm b/blib/lib/NOTEDB/dumper.pm deleted file mode 100644 index 3ae1ffb..0000000 --- a/blib/lib/NOTEDB/dumper.pm +++ /dev/null @@ -1,371 +0,0 @@ -# Perl module for note -# text database backend. see docu: perldoc NOTEDB::text -# using Storable as backend. - -package NOTEDB::dumper; - -$NOTEDB::text::VERSION = "1.00"; - -use strict; -use Data::Dumper; -use File::Spec; -use MIME::Base64; - -use NOTEDB; - -use Fcntl qw(LOCK_EX LOCK_UN); - -use Exporter (); -use vars qw(@ISA @EXPORT); -@ISA = qw(NOTEDB Exporter); - - - - -sub new { - my($this, %param) = @_; - - my $class = ref($this) || $this; - my $self = {}; - bless($self,$class); - - $self->{NOTEDB} = $param{dbname} || File::Spec->catfile($ENV{HOME}, ".notedb"); - - if(! -e $param{dbname}) { - open(TT,">$param{dbname}") or die "Could not create $param{dbname}: $!\n"; - close (TT); - } - elsif(! -w $param{dbname}) { - print "$param{dbname} is not writable!\n"; - exit(1); - } - - $self->{LOCKFILE} = $param{dbname} . "~LOCK"; - $self->{mtime} = $self->get_stat(); - $self->{unread} = 1; - $self->{data} = {}; - - return $self; -} - - -sub DESTROY -{ - # clean the desk! -} - -sub version { - my $this = shift; - return $NOTEDB::text::VERSION; -} - -sub get_stat { - my ($this) = @_; - my $mtime = (stat($this->{dbname}))[9]; - return $mtime; -} - - -sub set_del_all { - my $this = shift; - unlink $this->{NOTEDB}; - open(TT,">$this->{NOTEDB}") or die "Could not create $this->{NOTEDB}: $!\n"; - close (TT); -} - - -sub get_single { - my($this, $num) = @_; - my($address, $note, $date, $buffer, $n, $t, $buffer, ); - - my %data = $this->get_all(); - return ($data{$num}->{note}, $data{$num}->{date}); -} - - -sub get_all { - my $this = shift; - my($num, $note, $date, %res); - - if ($this->unchanged) { - return %{$this->{cache}}; - } - - my %data = $this->_retrieve(); - foreach my $num (keys %data) { - $res{$num}->{note} = $this->ude($data{$num}->{note}); - $res{$num}->{date} = $this->ude($data{$num}->{date}); - } - - $this->cache(%res); - return %res; -} - -sub import_data { - my ($this, $data) = @_; - my %res = $this->_retrieve(); - my $pos = (scalar keys %res) + 1; - foreach my $num (keys %{$data}) { - $res{$pos}->{note} = $this->uen($data->{$num}->{note}); - $res{$pos}->{date} = $this->uen($data->{$num}->{date}); - $pos++; - } - $this->_store(\%res); -} - -sub get_nextnum { - my $this = shift; - my($num, $te, $me, $buffer); - - if ($this->unchanged) { - $num = 1; - foreach (keys %{$this->{cache}}) { - $num++; - } - return $num; - } - - my %data = $this->get_all(); - my $size = scalar keys %data; - $num = $size + 1; - return $num; -} - -sub get_search { - my($this, $searchstring) = @_; - my($buffer, $num, $note, $date, %res, $t, $n, $match); - - my $regex = $this->generate_search($searchstring); - eval $regex; - if ($@) { - print "invalid expression: \"$searchstring\"!\n"; - return; - } - $match = 0; - - if ($this->unchanged) { - foreach my $num (keys %{$this->{cache}}) { - $_ = $this->{cache}{$num}->{note}; - eval $regex; - if ($match) { - $res{$num}->{note} = $this->{cache}{$num}->{note}; - $res{$num}->{date} = $this->{cache}{$num}->{date} - } - $match = 0; - } - return %res; - } - - my %data = $this->get_all(); - - foreach my $num(sort keys %data) { - $_ = $data{$num}->{note}; - eval $regex; - if($match) - { - $res{$num}->{note} = $data{$num}->{note}; - $res{$num}->{date} = $data{$num}->{data}; - } - $match = 0; - } - - return %res; -} - - - - -sub set_edit { - my($this, $num, $note, $date) = @_; - - my %data = $this->_retrieve(); - - $data{$num} = { - note => $this->uen($note), - date => $this->uen($date) - }; - - $this->_store(\%data); - - $this->changed; -} - - -sub set_new { - my($this, $num, $note, $date) = @_; - $this->set_edit($num, $note, $date); -} - - -sub set_del { - my($this, $num) = @_; - my(%data, $note, $date, $T, $setnum, $buffer, $n, $N, $t); - - $setnum = 1; - - %data = $this->_retrieve(); - return "ERROR" if (! exists $data{$num}); - - delete $data{$num}; - - $this->_store(\%data); - - $this->changed; - - return; -} - -sub set_recountnums { - my($this) = @_; - my(%orig, %data, $note, $date, $T, $setnum, $buffer, $n, $N, $t); - - $setnum = 1; - %orig = $this->_retrieve(); - - foreach $N (sort {$a <=> $b} keys %orig) { - $data{$setnum} = { - note => $orig{$N}->{note}, - date => $orig{$N}->{date} - }; - $setnum++; - } - - $this->_store(\%data); - - $this->changed; - - return; -} - -sub uen { - my ($this, $raw) = @_; - my($crypted); - if($NOTEDB::crypt_supported == 1) { - eval { - $crypted = $this->{cipher}->encrypt($raw); - return encode_base64($crypted); - }; - } - else { - return $raw; - } -} - -sub ude { - my ($this, $crypted) = @_; - my($raw); - if($NOTEDB::crypt_supported == 1) { - eval { - $raw = $this->{cipher}->decrypt(decode_base64($crypted)); - }; - return $raw; - } - else { - return $crypted; - } -} - - -sub _store { - my ($this, $data) = @_; - open N, ">$this->{NOTEDB}" or die "Could not open db: $!\n"; - print N Data::Dumper->Dump([$data], [qw(*data)]); - close N; -} - -sub _retrieve { - my $this = shift; - if (-s $this->{NOTEDB}) { - if ($this->changed() || $this->{unread}) { - open N, "<$this->{NOTEDB}" or die "Could not open db: $!\n"; - my $content = join "", ; - close N; - my %data; - eval $content; # creates %data - $this->{unread} = 0; - $this->{data} = \%data; - return %data; - } - } - else { - return (); - } -} - - -1; # keep this! - -__END__ - -=head1 NAME - -NOTEDB::text - module lib for accessing a notedb from perl - -=head1 SYNOPSIS - - # include the module - use NOTEDB; - - # create a new NOTEDB object - $db = new NOTEDB("text", "/home/tom/.notedb", 4096, 24); - - # decide to use encryption - # $key is the cipher to use for encryption - # $method must be either Crypt::IDEA or Crypt::DES - # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. - $db->use_crypt($key,$method); - - # do not use encryption - # this is the default - $db->no_crypt; - - # get a single note - ($note, $date) = $db->get_single(1); - - # search for a certain note - %matching_notes = $db->get_search("somewhat"); - # format of returned hash: - #$matching_notes{$numberofnote}->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} - - # get all existing notes - %all_notes = $db->get_all(); - # format of returnes hash like the one from get_search above - - # get the next noteid available - $next_num = $db->get_nextnum(); - - # modify a certain note - $db->set_edit(1, "any text", "23.12.2000 10:33:02"); - - # create a new note - $db->set_new(5, "any new text", "23.12.2000 10:33:02"); - - # delete a certain note - $db->set_del(5); - - # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH - $db->use_crypt("passphrase", "CryptMethod"); - - # turn off encryption. This is the default. - $db->no_crypt(); - - -=head1 DESCRIPTION - -You can use this module for accessing a note database. This backend uses -a text file for storage and Storable for accessing the file. - -Currently, NOTEDB module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... - -=head1 USAGE - -please see the section SYNOPSIS, it says it all. - -=head1 AUTHOR - -Thomas Linden . - - -=cut diff --git a/blib/lib/NOTEDB/general.pm b/blib/lib/NOTEDB/general.pm deleted file mode 100644 index 31671d6..0000000 --- a/blib/lib/NOTEDB/general.pm +++ /dev/null @@ -1,408 +0,0 @@ -# Perl module for note -# general database backend. see docu: perldoc NOTEDB::general -# using Config::General as backend. - -package NOTEDB::general; - -$NOTEDB::general::VERSION = "1.01"; - -use strict; -#use Data::Dumper; -use File::Spec; -use Config::General; -use MIME::Base64; -use FileHandle; -use NOTEDB; - -use Fcntl qw(LOCK_EX LOCK_UN); - -use Exporter (); -use vars qw(@ISA @EXPORT); -@ISA = qw(NOTEDB Exporter); - - - - - -sub new { - my($this, %param) = @_; - - my $class = ref($this) || $this; - my $self = {}; - bless($self,$class); - - $self->{dbname} = $param{dbname} || File::Spec->catfile($ENV{HOME}, ".notedb"); - - if(! -e $param{dbname}) { - open(TT,">$param{dbname}") or die "Could not create $param{dbname}: $!\n"; - close (TT); - } - elsif(! -w $param{dbname}) { - print "$param{dbname} is not writable!\n"; - exit(1); - } - - $self->{mtime} = $self->get_stat(); - $self->{unread} = 1; - $self->{data} = {}; - $self->{LOCKFILE} = $param{dbname} . "~LOCK"; - - return $self; -} - - -sub DESTROY { - # clean the desk! -} - -sub version { - my $this = shift; - return $NOTEDB::general::VERSION; -} - -sub get_stat { - my ($this) = @_; - my $mtime = (stat($this->{dbname}))[9]; - return $mtime; -} - -sub changed { - my ($this) = @_; - my $current = $this->get_stat(); - if ($current > $this->{mtime}) { - $this->{mtime} = $current; - return $current; - } - else { - return 0; - } -} - -sub set_del_all { - my $this = shift; - unlink $this->{dbname}; - open(TT,">$this->{dbname}") or die "Could not create $this->{dbname}: $!\n"; - close (TT); -} - - -sub get_single { - my($this, $num) = @_; - my($address, $note, $date, $buffer, $n, $t, $buffer, ); - - my %data = $this->get_all(); - - return ($data{$num}->{note}, $data{$num}->{date}); -} - - -sub get_all { - my $this = shift; - my($num, $note, $date, %res); - - if ($this->unchanged) { - return %{$this->{cache}}; - } - - my %data = $this->_retrieve(); - - foreach my $num (keys %data) { - $res{$num}->{note} = $this->ude($data{$num}->{note}); - $res{$num}->{date} = $this->ude($data{$num}->{date}); - } - - $this->cache(%res); - return %res; -} - -sub import_data { - my ($this, $data) = @_; - my %res = $this->_retrieve(); - my $pos = (scalar keys %res) + 1; - foreach my $num (keys %{$data}) { - $res{$pos}->{note} = $this->uen($data->{$num}->{note}); - $res{$pos}->{date} = $this->uen($data->{$num}->{date}); - $pos++; - } - $this->_store(\%res); -} - -sub get_nextnum { - my $this = shift; - my($num, $te, $me, $buffer); - - if ($this->unchanged) { - $num = 1; - foreach (keys %{$this->{cache}}) { - $num++; - } - return $num; - } - - my %data = $this->get_all(); - my $size = scalar keys %data; - $num = $size + 1; - return $num; -} - -sub get_search { - my($this, $searchstring) = @_; - my($buffer, $num, $note, $date, %res, $t, $n, $match); - - my $regex = $this->generate_search($searchstring); - eval $regex; - if ($@) { - print "invalid expression: \"$searchstring\"!\n"; - return; - } - $match = 0; - - if ($this->unchanged) { - foreach my $num (keys %{$this->{cache}}) { - $_ = $this->{cache}{$num}->{note}; - eval $regex; - if ($match) { - $res{$num}->{note} = $this->{cache}{$num}->{note}; - $res{$num}->{date} = $this->{cache}{$num}->{date} - } - $match = 0; - } - return %res; - } - - my %data = $this->get_all(); - - foreach my $num(sort keys %data) { - $_ = $data{$num}->{note}; - eval $regex; - if($match) - { - $res{$num}->{note} = $data{$num}->{note}; - $res{$num}->{date} = $data{$num}->{data}; - } - $match = 0; - } - - return %res; -} - - - - -sub set_edit { - my($this, $num, $note, $date) = @_; - - my %data = $this->_retrieve(); - - $data{$num} = { - note => $this->uen($note), - date => $this->uen($date) - }; - - $this->_store(\%data); - - $this->changed; -} - - -sub set_new { - my($this, $num, $note, $date) = @_; - $this->set_edit($num, $note, $date); -} - - -sub set_del { - my($this, $num) = @_; - my(%data, $note, $date, $T, $setnum, $buffer, $n, $N, $t); - - $setnum = 1; - - %data = $this->_retrieve(); - return "ERROR" if (! exists $data{$num}); - - delete $data{$num}; - - $this->_store(\%data); - - $this->changed; - - return; -} - -sub set_recountnums { - my($this) = @_; - my(%orig, %data, $note, $date, $T, $setnum, $buffer, $n, $N, $t); - - $setnum = 1; - %orig = $this->_retrieve(); - - foreach $N (sort {$a <=> $b} keys %orig) { - $data{$setnum} = { - note => $orig{$N}->{note}, - date => $orig{$N}->{date} - }; - $setnum++; - } - - $this->_store(\%data); - - $this->changed; - - return; -} - -sub uen { - my ($this, $raw) = @_; - my($crypted); - if($NOTEDB::crypt_supported == 1) { - eval { - $crypted = $this->{cipher}->encrypt($raw); - }; - print $@; - } - else { - $crypted = $raw; - } - my $coded = encode_base64($crypted); - return $coded; -} - -sub ude { - my ($this, $crypted) = @_; - my($raw); - if($NOTEDB::crypt_supported == 1) { - eval { - $raw = $this->{cipher}->decrypt(decode_base64($crypted)); - }; - } - else { - $raw = decode_base64($crypted) - } - return $raw; -} - - - -sub _store { - my ($this, $data) = @_; - open NOTE, ">$this->{dbname}" or die "could not open $this->{dbname}: $!\n"; - flock NOTE, LOCK_EX; - - if (%{$data}) { - my $content = SaveConfigString($data) or die "could not serialize data: $!\n"; - print NOTE $content; - } - else { - print NOTE ""; - } - - flock NOTE, LOCK_UN; - close NOTE; - - # finally re-read the db, so that we always have the latest data - $this->_retrieve(); -} - -sub _retrieve { - my ($this) = @_; - my $file = $this->{dbname}; - if (-s $file) { - if ($this->changed() || $this->{unread}) { - my $fh = new FileHandle "<$this->{dbname}" or die "could not open $this->{dbname}\n"; - flock $fh, LOCK_EX; - - my %data = ParseConfig(-ConfigFile => $fh) or die "could not read to database: $!\n"; - - flock $fh, LOCK_UN; - $fh->close(); - - $this->{unread} = 0; - $this->{data} = \%data; - return %data; - } - else { - return %{$this->{data}}; - } - } - else { - return (); - } -} - - -1; # keep this! - -__END__ - -=head1 NAME - -NOTEDB::general - module lib for accessing a notedb from perl - -=head1 SYNOPSIS - - # include the module - use NOTEDB; - - # create a new NOTEDB object - $db = new NOTEDB("text", "/home/tom/.notedb", 4096, 24); - - # decide to use encryption - # $key is the cipher to use for encryption - # $method must be either Crypt::IDEA or Crypt::DES - # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. - $db->use_crypt($key,$method); - - # do not use encryption - # this is the default - $db->no_crypt; - - # get a single note - ($note, $date) = $db->get_single(1); - - # search for a certain note - %matching_notes = $db->get_search("somewhat"); - # format of returned hash: - #$matching_notes{$numberofnote}->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} - - # get all existing notes - %all_notes = $db->get_all(); - # format of returnes hash like the one from get_search above - - # get the next noteid available - $next_num = $db->get_nextnum(); - - # modify a certain note - $db->set_edit(1, "any text", "23.12.2000 10:33:02"); - - # create a new note - $db->set_new(5, "any new text", "23.12.2000 10:33:02"); - - # delete a certain note - $db->set_del(5); - - # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH - $db->use_crypt("passphrase", "CryptMethod"); - - # turn off encryption. This is the default. - $db->no_crypt(); - - -=head1 DESCRIPTION - -You can use this module for accessing a note database. This backend uses -a text file for storage and Config::General for accessing the file. - -Currently, NOTEDB module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... - -=head1 USAGE - -please see the section SYNOPSIS, it says it all. - -=head1 AUTHOR - -Thomas Linden . - - -=cut diff --git a/blib/lib/NOTEDB/mysql.pm b/blib/lib/NOTEDB/mysql.pm deleted file mode 100644 index f17478c..0000000 --- a/blib/lib/NOTEDB/mysql.pm +++ /dev/null @@ -1,425 +0,0 @@ -# -# Perl module for note -# mysql database backend. see docu: perldoc NOTEDB::mysql -# - - -package NOTEDB::mysql; - -$NOTEDB::mysql::VERSION = "1.51"; - -use DBI; -use strict; -#use Data::Dumper; -use NOTEDB; - -use Exporter (); -use vars qw(@ISA @EXPORT); -@ISA = qw(NOTEDB Exporter); - - - - -sub new { - my($this, %param) = @_; - - my $class = ref($this) || $this; - my $self = {}; - bless($self,$class); - - my $dbname = $param{dbname} || "note"; - my $dbhost = $param{dbhost} || "localhost"; - my $dbuser = $param{dbuser} || ""; - my $dbpasswd = $param{dbpasswd} || ""; - my $dbport = $param{dbport} || ""; - my $fnum = "number"; - my $fnote = "note"; - my $fdate = "date"; - my $ftopic = "topic"; - - my $database; - if ($dbport) { - $database = "DBI:mysql:$dbname;host=$dbhost:$dbport"; - } - else { - $database = "DBI:mysql:$dbname;host=$dbhost"; - } - - $self->{table} = "note"; - - $self->{sql_getsingle} = "SELECT $fnote,$fdate,$ftopic FROM $self->{table} WHERE $fnum = ?"; - $self->{sql_all} = "SELECT $fnum,$fnote,$fdate,$ftopic FROM $self->{table}"; - $self->{sql_nextnum} = "SELECT max($fnum) FROM $self->{table}"; - $self->{sql_incrnum} = "SELECT $fnum FROM $self->{table} ORDER BY $fnum"; - $self->{sql_setnum} = "UPDATE $self->{table} SET $fnum = ? WHERE $fnum = ?"; - $self->{sql_edit} = "UPDATE $self->{table} SET $fnote = ?, $fdate = ?, $ftopic = ? WHERE $fnum = ?"; - $self->{sql_insertnew} = "INSERT INTO $self->{table} VALUES (?, ?, ?, ?)"; - $self->{sql_del} = "DELETE FROM $self->{table} WHERE $fnum = ?"; - $self->{sql_del_all} = "DELETE FROM $self->{table}"; - - $self->{DB} = DBI->connect($database, $dbuser, $dbpasswd) or die DBI->errstr(); - - return $self; -} - - -sub DESTROY -{ - # clean the desk! - my $this = shift; - $this->{DB}->disconnect; -} - - -sub lock { - my($this) = @_; - # LOCK the database! - my $lock = $this->{DB}->prepare("LOCK TABLES $this->{table} WRITE") - || die $this->{DB}->errstr(); - $lock->execute() || die $this->{DB}->errstr(); -} - - -sub unlock { - my($this) = @_; - my $unlock = $this->{DB}->prepare("UNLOCK TABLES") || die $this->{DB}->errstr; - $unlock->execute() || die $this->{DB}->errstr(); -} - - -sub version { - my $this = shift; - return $this->{version}; -} - - -sub get_single { - my($this, $num) = @_; - - my($note, $date, $topic); - my $statement = $this->{DB}->prepare($this->{sql_getsingle}) || die $this->{DB}->errstr(); - - $statement->execute($num) || die $this->{DB}->errstr(); - $statement->bind_columns(undef, \($note, $date, $topic)) || die $this->{DB}->errstr(); - - while($statement->fetch) { - $note = $this->ude($note); - if ($topic) { - $note = "$topic\n" . $note; - } - return $note, $this->ude($date); - } -} - - -sub get_all -{ - my $this = shift; - my($num, $note, $date, %res, $topic); - - if ($this->unchanged) { - return %{$this->{cache}}; - } - - my $statement = $this->{DB}->prepare($this->{sql_all}) or die $this->{DB}->errstr(); - - $statement->execute or die $this->{DB}->errstr(); - $statement->bind_columns(undef, \($num, $note, $date, $topic)) or die $this->{DB}->errstr(); - - while($statement->fetch) { - $res{$num}->{'note'} = $this->ude($note); - $res{$num}->{'date'} = $this->ude($date); - if ($topic) { - $res{$num}->{'note'} = "$topic\n" . $res{$num}->{'note'}; - } - } - - $this->cache(%res); - return %res; -} - - -sub get_nextnum -{ - my $this = shift; - my($num); - if ($this->unchanged) { - $num = 1; - foreach (keys %{$this->{cache}}) { - $num++; - } - return $num; - } - - my $statement = $this->{DB}->prepare($this->{sql_nextnum}) || die $this->{DB}->errstr(); - - $statement->execute || die $this->{DB}->errstr(); - $statement->bind_columns(undef, \($num)) || die $this->{DB}->errstr(); - - while($statement->fetch) { - return $num+1; - } -} - -sub get_search -{ - my($this, $searchstring) = @_; - my($num, $note, $date, %res, $match, $use_cache, $topic); - - my $regex = $this->generate_search($searchstring); - eval $regex; - if ($@) { - print "invalid expression: \"$searchstring\"!\n"; - return; - } - $match = 0; - - if ($this->unchanged) { - foreach my $num (keys %{$this->{cache}}) { - $_ = $this->{cache}{$num}->{note}; - eval $regex; - if ($match) { - $res{$num}->{note} = $this->{cache}{$num}->{note}; - $res{$num}->{date} = $this->{cache}{$num}->{date} - } - $match = 0; - } - return %res; - } - - my $statement = $this->{DB}->prepare($this->{sql_all}) or die $this->{DB}->errstr(); - - $statement->execute or die $this->{DB}->errstr(); - $statement->bind_columns(undef, \($num, $note, $date, $topic)) or die $this->{DB}->errstr(); - - while($statement->fetch) { - $note = $this->ude($note); - $date = $this->ude($date); - if ($topic) { - $note = "$topic\n" . $note; - } - $_ = $note; - eval $regex; - if($match) { - $res{$num}->{'note'} = $note; - $res{$num}->{'date'} = $date; - } - $match = 0; - } - return %res; -} - - - - -sub set_edit -{ - my($this, $num, $note, $date) = @_; - - $this->lock; - my $statement = $this->{DB}->prepare($this->{sql_edit}) or die $this->{DB}->errstr(); - $note =~ s/'/\'/g; - $note =~ s/\\/\\\\/g; - $statement->execute($this->uen($note), $this->uen($date), $num) - or die $this->{DB}->errstr(); - $this->unlock; - $this->changed; -} - - -sub set_new -{ - my($this, $num, $note, $date) = @_; - $this->lock; - my $statement = $this->{DB}->prepare($this->{sql_insertnew}) || die $this->{DB}->errstr(); - - my ($topic, $note) = $this->get_topic($note); - - $note =~ s/'/\'/g; - $note =~ s/\\/\\\\/g; - $topic =~ s/\\/\\\\/g; - $statement->execute($num, $this->uen($note), $this->uen($date), $topic) || die $this->{DB}->errstr(); - $this->unlock; - $this->changed; -} - - -sub set_del -{ - my($this, $num) = @_; - my($note, $date, $T); - - $this->lock; - ($note, $date) = $this->get_single($num); - - return "ERROR" if ($date !~ /^\d/); - - # delete record! - my $statement = $this->{DB}->prepare($this->{sql_del}) || die $this->{DB}->errstr(); - $statement->execute($num) || die $this->{DB}->errstr(); - $this->unlock; - $this->changed; - return; -} - - -sub set_del_all -{ - my($this) = @_; - $this->lock; - my $statement = $this->{DB}->prepare($this->{sql_del_all}) || die $this->{DB}->errstr(); - $statement->execute() || die $this->{DB}->errstr(); - $this->unlock; - $this->changed; - return; -} - -sub set_recountnums { - my $this = shift; - - $this->lock; - - my(@count, $i, $num, $setnum, $pos); - $setnum = 1; - $pos=0; $i=0; @count = (); - - my $statement = $this->{DB}->prepare($this->{sql_incrnum}) || die $this->{DB}->errstr(); - $statement->execute || die $this->{DB}->errstr(); - $statement->bind_columns(undef, \($num)) || die $this->{DB}->errstr(); - # store real id's in an array! - while($statement->fetch) { - $count[$i] = $num; - $i++; - } - # now recount them! - my $sub_statement = $this->{DB}->prepare($this->{sql_setnum}) || die $this->{DB}->errstr(); - for($pos=0;$pos<$i;$pos++) { - $setnum = $pos +1; - $sub_statement->execute($setnum,$count[$pos]) || die $this->{DB}->errstr(); - } - $this->unlock; - $this->changed; -} - -sub import_data { - my ($this, $data) = @_; - foreach my $num (keys %{$data}) { - my $pos = $this->get_nextnum(); - $this->set_new($pos, $data->{$num}->{note}, $data->{$num}->{date}); - } -} - -sub uen -{ - my $this = shift; - my($T); - if($NOTEDB::crypt_supported == 1) { - eval { - $T = pack("u", $this->{cipher}->encrypt($_[0])); - }; - } - else { - $T = $_[0]; - } - chomp $T; - return $T; -} - -sub ude -{ - my $this = shift; - my($T); - if($NOTEDB::crypt_supported == 1) { - eval { - $T = $this->{cipher}->decrypt(unpack("u",$_[0])) - }; - return $T; - } - else { - return $_[0]; - } -} - -sub get_topic { - my ($this, $data) = @_; - if ($data =~ /^\//) { - my($topic, $note) = split /\n/, $data, 2; - return ($topic, $note); - } - else { - return ("", $data); - } -} - -1; # keep this! - -__END__ - -=head1 NAME - -NOTEDB::mysql - module lib for accessing a notedb from perl - -=head1 SYNOPSIS - - # include the module - use NOTEDB; - - # create a new NOTEDB object (the last 4 params are db table/field names) - $db = new NOTEDB("mysql","note","localhost","username","password","note","number","note","date"); - - # get a single note - ($note, $date) = $db->get_single(1); - - # search for a certain note - %matching_notes = $db->get_search("somewhat"); - # format of returned hash: - #$matching_notes{$numberofnote}->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} - - # get all existing notes - %all_notes = $db->get_all(); - # format of returnes hash like the one from get_search above - - # get the next noteid available - $next_num = $db->get_nextnum(); - - # recount all noteids starting by 1 (usefull after deleting one!) - $db->set_recountnums(); - - # modify a certain note - $db->set_edit(1, "any text", "23.12.2000 10:33:02"); - - # create a new note - $db->set_new(5, "any new text", "23.12.2000 10:33:02"); - - # delete a certain note - $db->set_del(5); - - # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH - $db->use_crypt("passphrase", "CryptMethod"); - - # turn off encryption. This is the default. - $db->no_crypt(); - -=head1 DESCRIPTION - -You can use this module for accessing a note database. There are currently -two versions of this module, one version for a SQL database and one for a -binary file (note's own database-format). -However, both versions provides identical interfaces, which means, you do -not need to change your code, if you want to switch to another database format. - -Currently, NOTEDB module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... - -=head1 USAGE - -please see the section SYNOPSIS, it says it all. - -=head1 AUTHOR - -Thomas Linden . - - - -=cut diff --git a/blib/lib/NOTEDB/text.pm b/blib/lib/NOTEDB/text.pm deleted file mode 100644 index b06edee..0000000 --- a/blib/lib/NOTEDB/text.pm +++ /dev/null @@ -1,358 +0,0 @@ -# Perl module for note -# text database backend. see docu: perldoc NOTEDB::text -# using Storable as backend. - -package NOTEDB::text; - -$NOTEDB::text::VERSION = "1.03"; - -use strict; -#use Data::Dumper; -use File::Spec; -use Storable qw(lock_nstore lock_retrieve); -use MIME::Base64; - -use NOTEDB; - -use Fcntl qw(LOCK_EX LOCK_UN); - -use Exporter (); -use vars qw(@ISA @EXPORT); -@ISA = qw(NOTEDB Exporter); - - - - -sub new { - my($this, %param) = @_; - - my $class = ref($this) || $this; - my $self = {}; - bless($self,$class); - - $self->{NOTEDB} = $param{dbname} || File::Spec->catfile($ENV{HOME}, ".notedb"); - - if(! -e $param{dbname}) { - open(TT,">$param{dbname}") or die "Could not create $param{dbname}: $!\n"; - close (TT); - } - elsif(! -w $param{dbname}) { - print "$param{dbname} is not writable!\n"; - exit(1); - } - - $self->{LOCKFILE} = $param{dbname} . "~LOCK"; - $self->{mtime} = $self->get_stat(); - $self->{unread} = 1; - $self->{data} = {}; - - return $self; -} - - -sub DESTROY -{ - # clean the desk! -} - -sub version { - my $this = shift; - return $NOTEDB::text::VERSION; -} - -sub get_stat { - my ($this) = @_; - my $mtime = (stat($this->{dbname}))[9]; - return $mtime; -} - - -sub set_del_all { - my $this = shift; - unlink $this->{NOTEDB}; - open(TT,">$this->{NOTEDB}") or die "Could not create $this->{NOTEDB}: $!\n"; - close (TT); -} - - -sub get_single { - my($this, $num) = @_; - my($address, $note, $date, $buffer, $n, $t, $buffer, ); - - my %data = $this->get_all(); - - return ($data{$num}->{note}, $data{$num}->{date}); -} - - -sub get_all { - my $this = shift; - my($num, $note, $date, %res); - - if ($this->unchanged) { - return %{$this->{cache}}; - } - - my %data = $this->_retrieve(); - - foreach my $num (keys %data) { - $res{$num}->{note} = $this->ude($data{$num}->{note}); - $res{$num}->{date} = $this->ude($data{$num}->{date}); - } - - $this->cache(%res); - return %res; -} - -sub import_data { - my ($this, $data) = @_; - my %res = $this->_retrieve(); - my $pos = (scalar keys %res) + 1; - foreach my $num (keys %{$data}) { - $res{$pos}->{note} = $this->uen($data->{$num}->{note}); - $res{$pos}->{date} = $this->uen($data->{$num}->{date}); - $pos++; - } - $this->_store(\%res); -} - -sub get_nextnum { - my $this = shift; - my($num, $te, $me, $buffer); - - if ($this->unchanged) { - my @numbers = sort { $a <=> $b } keys %{$this->{cache}}; - $num = pop @numbers; - $num++; - #$num = 1; - #foreach (keys %{$this->{cache}}) { - # $num++; - #} - return $num; - } - - my %data = $this->get_all(); - my @numbers = sort { $a <=> $b } keys %data; - $num = pop @numbers; - $num++; - #my $size = scalar keys %data; - #$num = $size + 1; - return $num; -} - -sub get_search { - my($this, $searchstring) = @_; - my($buffer, $num, $note, $date, %res, $t, $n, $match); - - my $regex = $this->generate_search($searchstring); - eval $regex; - if ($@) { - print "invalid expression: \"$searchstring\"!\n"; - return; - } - $match = 0; - - if ($this->unchanged) { - foreach my $num (keys %{$this->{cache}}) { - $_ = $this->{cache}{$num}->{note}; - eval $regex; - if ($match) { - $res{$num}->{note} = $this->{cache}{$num}->{note}; - $res{$num}->{date} = $this->{cache}{$num}->{date} - } - $match = 0; - } - return %res; - } - - my %data = $this->get_all(); - - foreach my $num(sort keys %data) { - $_ = $data{$num}->{note}; - eval $regex; - if($match) - { - $res{$num}->{note} = $data{$num}->{note}; - $res{$num}->{date} = $data{$num}->{data}; - } - $match = 0; - } - - return %res; -} - - - - -sub set_edit { - my($this, $num, $note, $date) = @_; - - my %data = $this->_retrieve(); - - $data{$num} = { - note => $this->uen($note), - date => $this->uen($date) - }; - - $this->_store(\%data); - - $this->changed; -} - - -sub set_new { - my($this, $num, $note, $date) = @_; - $this->set_edit($num, $note, $date); -} - - -sub set_del { - my($this, $num) = @_; - my(%data, $note, $date, $T, $setnum, $buffer, $n, $N, $t); - - $setnum = 1; - - %data = $this->_retrieve(); - return "ERROR" if (! exists $data{$num}); - - delete $data{$num}; - - $this->_store(\%data); - - $this->changed; - - return; -} - -sub set_recountnums { - # not required here - return; -} - -sub uen { - my ($this, $raw) = @_; - my($crypted); - if($NOTEDB::crypt_supported == 1) { - eval { - $crypted = $this->{cipher}->encrypt($raw); - }; - } - else { - $crypted = $raw; - } - my $coded = encode_base64($crypted); - return $coded; -} - -sub ude { - my ($this, $crypted) = @_; - my($raw); - if($NOTEDB::crypt_supported == 1) { - eval { - $raw = $this->{cipher}->decrypt(decode_base64($crypted)); - }; - } - else { - $raw = decode_base64($crypted) - } - return $raw; -} - - -sub _store { - my ($this, $data) = @_; - lock_nstore($data, $this->{NOTEDB}); -} - -sub _retrieve { - my $this = shift; - if (-s $this->{NOTEDB}) { - if ($this->changed() || $this->{unread}) { - my $data = lock_retrieve($this->{NOTEDB}); - $this->{unread} = 0; - $this->{data} = $data; - return %{$data}; - } - } - else { - return (); - } -} - - -1; # keep this! - -__END__ - -=head1 NAME - -NOTEDB::text - module lib for accessing a notedb from perl - -=head1 SYNOPSIS - - # include the module - use NOTEDB; - - # create a new NOTEDB object - $db = new NOTEDB("text", "/home/tom/.notedb", 4096, 24); - - # decide to use encryption - # $key is the cipher to use for encryption - # $method must be either Crypt::IDEA or Crypt::DES - # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. - $db->use_crypt($key,$method); - - # do not use encryption - # this is the default - $db->no_crypt; - - # get a single note - ($note, $date) = $db->get_single(1); - - # search for a certain note - %matching_notes = $db->get_search("somewhat"); - # format of returned hash: - #$matching_notes{$numberofnote}->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} - - # get all existing notes - %all_notes = $db->get_all(); - # format of returnes hash like the one from get_search above - - # get the next noteid available - $next_num = $db->get_nextnum(); - - # modify a certain note - $db->set_edit(1, "any text", "23.12.2000 10:33:02"); - - # create a new note - $db->set_new(5, "any new text", "23.12.2000 10:33:02"); - - # delete a certain note - $db->set_del(5); - - # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH - $db->use_crypt("passphrase", "CryptMethod"); - - # turn off encryption. This is the default. - $db->no_crypt(); - - -=head1 DESCRIPTION - -You can use this module for accessing a note database. This backend uses -a text file for storage and Storable for accessing the file. - -Currently, NOTEDB module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... - -=head1 USAGE - -please see the section SYNOPSIS, it says it all. - -=head1 AUTHOR - -Thomas Linden . - - -=cut diff --git a/blib/lib/auto/NOTEDB/.exists b/blib/lib/auto/NOTEDB/.exists deleted file mode 100644 index e69de29..0000000 diff --git a/blib/lib/note.pod b/blib/lib/note.pod deleted file mode 100644 index a16d2a3..0000000 --- a/blib/lib/note.pod +++ /dev/null @@ -1,528 +0,0 @@ -# -*-perl-*- - -=head1 NAME - -note - a perl script for maintaining notes. - - -=head1 SYNPOPSIS - -note [options] [ number [,number...]] - - -=head1 DESCRIPTION - -B is a small console program written in perl, which allows -you to manage notes similar to programs like "knotes" but from -the commandline. Note can use different database-backends for -notes-storage. It ships with a DBI-based mysql-module(which -can also be used for other by DBI supported DBMS), another -module, which uses a binary file for storage and a DBM module. -There are also two modules available which uses a text file. -Note supports since version 1.0.0 encryption(IDEA or DES)! - - -=head1 OPTIONS - - -=over - -=item I<-c, --config file> - -Use another config file than the default ~/.noterc. - - -=item I<-l, --list [topic]> - -Lists all existing notes. If no topic were specified, -it will display a list of all existing topics. -See the section I for details about topics. - -=item I<-L, --longlist [topic]> - -The same as I<-l> but prints also the timestamp of the notes. - - -=item I<-t, --topic> - -Prints a list of all topics as a tree. - - -=item I<-T, --longtopic> - -Prints the topic-tree with the notes under each topic. - - -=item I<-s, --search string> - -Searches for trough the notes database. See the section -I for details about the search engine. - - -=item I<-e, --edit number> - -Edit the note with the number using your default editor -or the one you specified in the config file. - - -=item I<-d, --delete number> - -Delete the note with the number . You can delete multiple notes -with one command. "1-4" deletes the notes 1,2,3,4. And "1,5,7" deletes -the specified ones. - - -=item I<-D, --Dump [file | -]> - -Dumps all notes to the textfile . If is a "-" it will -be printed out to standard output (STDOUT). - - -=item I<-I, --Import file | -> - -Imports a previously dumped textfile into the -note database. Data will be appended by default. -You can also specify a dash I instead of a , -which causes note, silently to read in a dump from STDIN. - - -=item I<-o, --overwrite> - -Only suitable for use with --Import. Overwrites an -existing notedb. Use with care. - - -=item I<-r, --raw> - -Raw mode, output will not be formatted. Works not in interactive -mode, only on cmd-line for list and display. That means, no colors -will be used and no lines or titles. - - -=item I<-i, --interactive> - -Start note in interactive mode. See the section I -for details on this mode. - - -=item I<--encrypt cleartext> - -Encrypt the given clear text string. You would need that if you want to -store the mysql password not in cleartext in the config(if you are using -the mysql backend!). - - -=item I<-h, --help> - -Display this help screen. - - -=item I<-v, --version> - -Display the version number. - - -=item B<-> - -If you run note just with one dash: B, then it will read in a new -note from STDIN until EOF. This makes it possible to pipe text into a new note, i.e.: - - cat sometextfile | note - - - -=back - - - - -=head1 USAGE - -=head2 GENERAL USAGE - -If you don't know, how to run note, try "note -h" first. -It will tell you all available commandline options. - -To create a new note, simply run "note". You can enter -the note (the length is by default limited to 4096 bytes, -which you can change from your config file if you are using -the binary backend, otherwise there is no limitation). -End by typing a . on a line itself. note will tell you the -number of the note. - -If you want to view the note, type "note 1", if the notenumber -was 1. - -If you want to get an overview of all notes, type "note -l". -You will get a list of all notes, containing the number, -the first line and the creation date. If topic-support is -turned on (which is by default), then all subtopics under the -current topic will be displayed first. -If you want to see the timestamps, use "-L" instead of "-l". -Read more about topics below in the section "Topics". -You can also specify the topic which notes you want to see: -"-l mytopic" does the trick. -Additional, you might want to get an overview of your topic- -structure. You can use the command "-t" in this case, which -will display a tree-view of your topic-structure. You can -use the command "-T" if you want to see the notes under each -topic too. "-T" will also show the number of each note. - -To edit a certain note, type "note -e 1". It will invoke your -editor (vi or pico). You can edit it, after saving, note -will store the changed note to the database. - -Of course you can drop a certain note: "note -d 1" deletes -note number 1. If a note in the middle or the beginning of -the database will be deleted, note will recount the other -existent notes. For example there are 3 notes, number 1, 2 -and 3. If you delete number 2, then number 3 will become -number 2. -You can also make use of the extended delete-syntax: -To delete note 1 and 2, use "-d 1,2" -To delete note 1,2 and 3, use "-d 1-3". - - - -=head2 SEARCHING - -If you cannot remember, which note you are looking for, you -can use the search capability of note: "note -s ". -note will search the whole note database case insensitive for -an occurence of this string and tell you the number and first- -line it has. - -You can extend the searchstring using B, B ( and ) and -shell-like wildcards: - - $ note -s "moses AND lenin" - -or: - - $ note -s "(mike OR arnold) AND (jackson OR schwarzenegger)" - -If note finds a note, which first line is a topic, then it will -display it's second line. - -These rules apply for the interactive search too. - -You need to know, that note searches for the expression in every -note. In other words, "moses AND lenin" searches for an occurence -of "moses" and "lenin" in ONE note. Or, if you are looking for -"mike OR daniel", then it searches for an occurence of "mike" or -daniel" in ONE note. Thus a note with the text "mike oldfield" will -match that search. - - -=head2 TOPICS - -If topic-support is turned on (which is by default), the various -notes are sorted under various topics. There is no special database -field for the topic. Instead the topic will be stored right in the -note. -If the first line of your note contains some text bordered by slashes -(or whatever you prefer, set "TopicSeparator" in your config! default -is slash), then note will consider it as the topic of this certain -note. For examle: - - B - -If you are using topics, no data after the topic is allowed, if there -is any text, note will consider it as a subtopic! Therefore, don't for- -get to put a newline after the topic-line. - -The list-command will only show you notes under this topic. If you -create a new note, it will automagically inserted under the current -topic (note will prepend the string "/topicname/" to the text of your -note). - -You can create at any time from any point a new topic. Just create a new -note and type the name of the new topic bordered by slashes (or -TopicSeparator) at the first line of this note. After saving, there -will be available a new topic with one note in it. - -You can create as many subtopics as you like, the format is similar to -a filesystem-path. An example, say, you want to create such a -structure: - - (root - top level) - | - |----test - | |----subtopic - | | |--note 1 - | | |--note 2 - | | - | |--note 4 - | - |--note 3 - -Then you may create those 4 new notes: - - --- snip --- - /test/subtopic/ - note 1 - --- snip --- - /test/subtopic/ - note 2 - --- snip --- - note 3 - --- snip --- - /test/ - note 4 - --- snip --- - -I hope, you got the point ;-) - -If a note does not contain the "magic" /topic/ construction on the first -line, it will be listed under the "root" of note, that is the point -you are at the startup of note. - -You can subsequently move a note without a topic to a certain topic. -Simply edit it and insert at the first line the above mentioned -construction. - -Note: Please don't forget the prepending and appending a slash of a -topic. You will get strange results without it! - - - - -=head2 INTERACTIVE MODE - -If you start note with the commandline flag B<-i>, then it starts -with an interactive interface. -It will start with a listing under the default top-topic ("/"). -You can enter the name of a topic to change to that topic. This works -similar to a filesystem structure. The current topic will be -displayed on the top of the screen. - -The following commands are available: - -=over - -=item B - -This command lists all notes with a timestamp. If you specify a topic, it -will only list the notes under this topic. If you are under a certain subtopic, -then it will only display the notes under this topic. - -=item B - -This commands behaves similar to B but it does not display the timestamp. -You can achieve the same result by simply pressing enter at any time. - - -=item B - -You can create a new note by simply pressing B or B. You favorite -editor will be started and you can enter your note text. If you are already -under a topic then this new note will automatically go to this topic. -note adds an aditional line to the top of the note with the topic. But -you can of course specify your own topic. - -Note will tell you which number it has assigned to the newly created note. - -=item B - -By entering B or B and a note-number you can edit an existing note -using your favorite editor. This way you can also move an existing note -from one topic to another one by editing the first line of the note. - - -=item B - -B or B deletes one or more existing note(s). It requires a note number -or a set of note numbers. 1-5 and 1,7,9 are possible values. -After one or more notes has been deleted note will recount all remaining notes. -Say if you delete 1 and 2, then 3 will become 1, 4 will become 5 and so forth. - - -=item B - -You can search for the occurence of a text in your notes-database with the -command B or B. If you omit an expression note will ask you for one. - -If your search criteria matches on exactly one entry, note will display -that note entry instead of displaying its number. - -=item B - -This prints a tree-view of your topic-structure. B displays the tree with -notes, B displays just the topics without notes. - - -=item B - -Change the actual topic under which you are. This works identical like just -entering the topic but it has some advantages. You can enter B if -you want to go one level up in the topic-structure. And you can enter B -to go to the top of the structure. You can always leave out the 'cd' keyword too. - -Additional it is possible to enter a note-number instead of a topic name. -For this feature to be active you need to set the config option B -to B<1> or B. If you use a number and the note with this number is -under a certain topic then you will "cd" to this topic. This allows you -to do kind of jumps over multiple levels of topics. - -If is possible to abbreviate a topic. This works only if the abbreviation -matches on one single topic. If it matches more than one topic then the -available ones will be suggested. - -=item B - -Display a short help screen. - - -=item B - -Quit note. - -=back - - - - - -=head2 BACKUP - -You can also dump the contents of your note-database into a -ASCII-textfile(I<-D>). You can use this file later to import it into -your note-database(-I). This is usefull, if you want quickly trans- -fer your notes from one host to another (i.e. you could mail -your note-dump form your office to home and import it there -for further use). - -The dumps from the two versions of note are in the same format. -Using dumps it is also possible to reinitialize your database. You -can use the "-o" switch whcih causes note to overwrite your existing -database. This is very handy if you changed heavily your config. And -it is required, if you changed: encryption, db-driver, (binary-format) -and the password. You can use the following command for reinitializing: - - $ note -D - | note -o -I - - -What the hell, does this do?! Step by step: - -=over - -=item * - -B creates a note-database dump and prints it out -to stantdard output. - -=item * - -B<|> this is the shell's pipe command. It takes the output -of the left program and gives it to the right program as -standard input. - -=item * - -B imports a note-database dump from standard -input and overwrites an existing database. - -=back - -Before you use the B<-o> switch, I consider you to make a backup! - - - - - -=head2 FORMATING - -Another very nice feature is the possibility to format the note-text -(as much as shell allows it). First, you can use the note-internal -"magic-strings" for colorizing. Those strings looks much like HTML: -"here is a green line of text no more green." -As you see, the beginning of another color starts with a tag(kinda) of -the color and ends with an end tag . - -The following colors are available: -black, red, green, yellow, blue, magenta, cyan and white. - -Beside colorizing text, you can also create bold or underlined text! If -you decide to use this (additional) feature, you need to set the -Config-Option "FormatText" to 1 which turns it on. -Usage is very straightforward, if a word (a word is defined as some -text with at least one space surrounded) is between a magic mark- -character. Here are the available things, you can do: - - bold: **word** - underlined: __word__ - inverse: {{word}} - hidden: //word// - -The text will be formatted using the actually note-color. - -The hidden formatting will use blue forground and blue background -to hide a string from the terminal, which is usefull for passwords. - -If you set "FormatText" to I then the formatting can be -done this way instead: - - bold: *word* - underlined: _word_ - inverse: {word} - hidden: /word/ - -=head1 ENCRYPTION - -You can turn on encryption from the config file. -Simply set UseEncryption to 1. Please note, that you need -to decide, if you want to use encryption before the first use -of note! If have already a note database and want to "migrate" -to encryption, I suggest you to follow the directions in the -file UPGRADE! - -You can choose from different encryption algorythms. The default -is IDEA, but DES or BLOWFISH are also possible. You need to have -installed the following additional perl-modules on your system: -MD5 -Crypt::IDEA -Crypt::DES -Crypt::CBC - -After turning on encryption, note will ask you for a passphrase -everytime it runs! It will *not* store this passphrase! -So, don't forget it! Be careful! - - - - -=head1 CONFIGURATION - -You can use a configuration file with note but it is not required. -Note will use default values if there is no config. - -The default config file is B<~/.noterc>. You may specify another -one with the commandline flag I<--config>. - -Comments start with #, empty lines will be ignored. - -To turn on an option, set it to: B<1>, B or B. - -To turn off an option, set it to: B<0>, B or B. - -An option consists of an atribute-value pair separated -by minimum one space (more spaces and/or tabs are allowed) -and an optional equal sign in between. - -Variable names are case in-sensitive. - -For a detailed explanation of each possible parameter take a look -at the supplied sample configuration file in B. - - - - - -=head1 AUTHOR - -Thomas Linden - - -=head1 VERSION - -1.3.1 (12/01/2005) - -=cut diff --git a/blib/man3/.exists b/blib/man3/.exists deleted file mode 100644 index e69de29..0000000 diff --git a/blib/man3/NOTEDB::binary.3pm b/blib/man3/NOTEDB::binary.3pm deleted file mode 100644 index f728e94..0000000 --- a/blib/man3/NOTEDB::binary.3pm +++ /dev/null @@ -1,224 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "NOTEDB::binary 3pm" -.TH NOTEDB::binary 3pm "2005-10-25" "perl v5.8.4" "User Contributed Perl Documentation" -.SH "NAME" -NOTEDB::binary \- module lib for accessing a notedb from perl -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -.Vb 2 -\& # include the module -\& use NOTEDB; -.Ve -.PP -.Vb 2 -\& # create a new NOTEDB object -\& $db = new NOTEDB("binary", "/home/tom/.notedb", 4096, 24); -.Ve -.PP -.Vb 5 -\& # decide to use encryption -\& # $key is the cipher to use for encryption -\& # $method must be either Crypt::IDEA or Crypt::DES -\& # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. -\& $db\->use_crypt($key,$method); -.Ve -.PP -.Vb 3 -\& # do not use encryption -\& # this is the default -\& $db\->no_crypt; -.Ve -.PP -.Vb 2 -\& # get a single note -\& ($note, $date) = $db\->get_single(1); -.Ve -.PP -.Vb 4 -\& # search for a certain note -\& %matching_notes = $db\->get_search("somewhat"); -\& # format of returned hash: -\& #$matching_notes{$numberofnote}\->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} -.Ve -.PP -.Vb 3 -\& # get all existing notes -\& %all_notes = $db\->get_all(); -\& # format of returnes hash like the one from get_search above -.Ve -.PP -.Vb 2 -\& # get the next noteid available -\& $next_num = $db\->get_nextnum(); -.Ve -.PP -.Vb 2 -\& # modify a certain note -\& $db\->set_edit(1, "any text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # create a new note -\& $db\->set_new(5, "any new text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # delete a certain note -\& $db\->set_del(5); -.Ve -.PP -.Vb 2 -\& # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH -\& $db\->use_crypt("passphrase", "CryptMethod"); -.Ve -.PP -.Vb 2 -\& # turn off encryption. This is the default. -\& $db\->no_crypt(); -.Ve -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -You can use this module for accessing a note database. There are currently -two versions of this module, one version for a \s-1SQL\s0 database and one for a -binary file (note's own database\-format). -However, both versions provides identical interfaces, which means, you do -not need to change your code, if you want to switch to another database format. -.PP -Currently, \s-1NOTEDB\s0 module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... -.SH "USAGE" -.IX Header "USAGE" -please see the section \s-1SYNOPSIS\s0, it says it all. -.SH "AUTHOR" -.IX Header "AUTHOR" -Thomas Linden . diff --git a/blib/man3/NOTEDB::dbm.3pm b/blib/man3/NOTEDB::dbm.3pm deleted file mode 100644 index 8ea3047..0000000 --- a/blib/man3/NOTEDB::dbm.3pm +++ /dev/null @@ -1,202 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "NOTEDB::dbm 3pm" -.TH NOTEDB::dbm 3pm "2005-10-25" "perl v5.8.4" "User Contributed Perl Documentation" -.SH "NAME" -NOTEDB::dbm \- module lib for accessing a notedb from perl -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -.Vb 2 -\& # include the module -\& use NOTEDB; -.Ve -.PP -.Vb 2 -\& # create a new NOTEDB object (the last 4 params are db table/field names) -\& $db = new NOTEDB("mysql","note","/home/user/.notedb/"); -.Ve -.PP -.Vb 2 -\& # get a single note -\& ($note, $date) = $db\->get_single(1); -.Ve -.PP -.Vb 4 -\& # search for a certain note -\& %matching_notes = $db\->get_search("somewhat"); -\& # format of returned hash: -\& #$matching_notes{$numberofnote}\->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} -.Ve -.PP -.Vb 3 -\& # get all existing notes -\& %all_notes = $db\->get_all(); -\& # format of returnes hash like the one from get_search above -.Ve -.PP -.Vb 2 -\& # get the next noteid available -\& $next_num = $db\->get_nextnum(); -.Ve -.PP -.Vb 2 -\& # recount all noteids starting by 1 (usefull after deleting one!) -\& $db\->set_recountnums(); -.Ve -.PP -.Vb 2 -\& # modify a certain note -\& $db\->set_edit(1, "any text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # create a new note -\& $db\->set_new(5, "any new text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # delete a certain note -\& $db\->set_del(5); -.Ve -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -You can use this module for accessing a note database. This is the dbm module. -It uses the \s-1DB_FILE\s0 module to store it's data and it uses \s-1DBM\s0 files for tis purpose. -.PP -Currently, \s-1NOTEDB\s0 module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... -.SH "USAGE" -.IX Header "USAGE" -please see the section \s-1SYNOPSIS\s0, it says it all. -.SH "AUTHOR" -.IX Header "AUTHOR" -Thomas Linden . diff --git a/blib/man3/NOTEDB::dumper.3pm b/blib/man3/NOTEDB::dumper.3pm deleted file mode 100644 index 117089c..0000000 --- a/blib/man3/NOTEDB::dumper.3pm +++ /dev/null @@ -1,221 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "NOTEDB::dumper 3pm" -.TH NOTEDB::dumper 3pm "2005-10-25" "perl v5.8.4" "User Contributed Perl Documentation" -.SH "NAME" -NOTEDB::text \- module lib for accessing a notedb from perl -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -.Vb 2 -\& # include the module -\& use NOTEDB; -.Ve -.PP -.Vb 2 -\& # create a new NOTEDB object -\& $db = new NOTEDB("text", "/home/tom/.notedb", 4096, 24); -.Ve -.PP -.Vb 5 -\& # decide to use encryption -\& # $key is the cipher to use for encryption -\& # $method must be either Crypt::IDEA or Crypt::DES -\& # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. -\& $db\->use_crypt($key,$method); -.Ve -.PP -.Vb 3 -\& # do not use encryption -\& # this is the default -\& $db\->no_crypt; -.Ve -.PP -.Vb 2 -\& # get a single note -\& ($note, $date) = $db\->get_single(1); -.Ve -.PP -.Vb 4 -\& # search for a certain note -\& %matching_notes = $db\->get_search("somewhat"); -\& # format of returned hash: -\& #$matching_notes{$numberofnote}\->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} -.Ve -.PP -.Vb 3 -\& # get all existing notes -\& %all_notes = $db\->get_all(); -\& # format of returnes hash like the one from get_search above -.Ve -.PP -.Vb 2 -\& # get the next noteid available -\& $next_num = $db\->get_nextnum(); -.Ve -.PP -.Vb 2 -\& # modify a certain note -\& $db\->set_edit(1, "any text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # create a new note -\& $db\->set_new(5, "any new text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # delete a certain note -\& $db\->set_del(5); -.Ve -.PP -.Vb 2 -\& # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH -\& $db\->use_crypt("passphrase", "CryptMethod"); -.Ve -.PP -.Vb 2 -\& # turn off encryption. This is the default. -\& $db\->no_crypt(); -.Ve -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -You can use this module for accessing a note database. This backend uses -a text file for storage and Storable for accessing the file. -.PP -Currently, \s-1NOTEDB\s0 module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... -.SH "USAGE" -.IX Header "USAGE" -please see the section \s-1SYNOPSIS\s0, it says it all. -.SH "AUTHOR" -.IX Header "AUTHOR" -Thomas Linden . diff --git a/blib/man3/NOTEDB::general.3pm b/blib/man3/NOTEDB::general.3pm deleted file mode 100644 index aed44c1..0000000 --- a/blib/man3/NOTEDB::general.3pm +++ /dev/null @@ -1,221 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "NOTEDB::general 3pm" -.TH NOTEDB::general 3pm "2005-10-25" "perl v5.8.4" "User Contributed Perl Documentation" -.SH "NAME" -NOTEDB::general \- module lib for accessing a notedb from perl -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -.Vb 2 -\& # include the module -\& use NOTEDB; -.Ve -.PP -.Vb 2 -\& # create a new NOTEDB object -\& $db = new NOTEDB("text", "/home/tom/.notedb", 4096, 24); -.Ve -.PP -.Vb 5 -\& # decide to use encryption -\& # $key is the cipher to use for encryption -\& # $method must be either Crypt::IDEA or Crypt::DES -\& # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. -\& $db\->use_crypt($key,$method); -.Ve -.PP -.Vb 3 -\& # do not use encryption -\& # this is the default -\& $db\->no_crypt; -.Ve -.PP -.Vb 2 -\& # get a single note -\& ($note, $date) = $db\->get_single(1); -.Ve -.PP -.Vb 4 -\& # search for a certain note -\& %matching_notes = $db\->get_search("somewhat"); -\& # format of returned hash: -\& #$matching_notes{$numberofnote}\->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} -.Ve -.PP -.Vb 3 -\& # get all existing notes -\& %all_notes = $db\->get_all(); -\& # format of returnes hash like the one from get_search above -.Ve -.PP -.Vb 2 -\& # get the next noteid available -\& $next_num = $db\->get_nextnum(); -.Ve -.PP -.Vb 2 -\& # modify a certain note -\& $db\->set_edit(1, "any text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # create a new note -\& $db\->set_new(5, "any new text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # delete a certain note -\& $db\->set_del(5); -.Ve -.PP -.Vb 2 -\& # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH -\& $db\->use_crypt("passphrase", "CryptMethod"); -.Ve -.PP -.Vb 2 -\& # turn off encryption. This is the default. -\& $db\->no_crypt(); -.Ve -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -You can use this module for accessing a note database. This backend uses -a text file for storage and Config::General for accessing the file. -.PP -Currently, \s-1NOTEDB\s0 module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... -.SH "USAGE" -.IX Header "USAGE" -please see the section \s-1SYNOPSIS\s0, it says it all. -.SH "AUTHOR" -.IX Header "AUTHOR" -Thomas Linden . diff --git a/blib/man3/NOTEDB::mysql.3pm b/blib/man3/NOTEDB::mysql.3pm deleted file mode 100644 index 3c13afb..0000000 --- a/blib/man3/NOTEDB::mysql.3pm +++ /dev/null @@ -1,215 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "NOTEDB::mysql 3pm" -.TH NOTEDB::mysql 3pm "2005-10-25" "perl v5.8.4" "User Contributed Perl Documentation" -.SH "NAME" -NOTEDB::mysql \- module lib for accessing a notedb from perl -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -.Vb 2 -\& # include the module -\& use NOTEDB; -.Ve -.PP -.Vb 2 -\& # create a new NOTEDB object (the last 4 params are db table/field names) -\& $db = new NOTEDB("mysql","note","localhost","username","password","note","number","note","date"); -.Ve -.PP -.Vb 2 -\& # get a single note -\& ($note, $date) = $db\->get_single(1); -.Ve -.PP -.Vb 4 -\& # search for a certain note -\& %matching_notes = $db\->get_search("somewhat"); -\& # format of returned hash: -\& #$matching_notes{$numberofnote}\->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} -.Ve -.PP -.Vb 3 -\& # get all existing notes -\& %all_notes = $db\->get_all(); -\& # format of returnes hash like the one from get_search above -.Ve -.PP -.Vb 2 -\& # get the next noteid available -\& $next_num = $db\->get_nextnum(); -.Ve -.PP -.Vb 2 -\& # recount all noteids starting by 1 (usefull after deleting one!) -\& $db\->set_recountnums(); -.Ve -.PP -.Vb 2 -\& # modify a certain note -\& $db\->set_edit(1, "any text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # create a new note -\& $db\->set_new(5, "any new text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # delete a certain note -\& $db\->set_del(5); -.Ve -.PP -.Vb 2 -\& # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH -\& $db\->use_crypt("passphrase", "CryptMethod"); -.Ve -.PP -.Vb 2 -\& # turn off encryption. This is the default. -\& $db\->no_crypt(); -.Ve -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -You can use this module for accessing a note database. There are currently -two versions of this module, one version for a \s-1SQL\s0 database and one for a -binary file (note's own database\-format). -However, both versions provides identical interfaces, which means, you do -not need to change your code, if you want to switch to another database format. -.PP -Currently, \s-1NOTEDB\s0 module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... -.SH "USAGE" -.IX Header "USAGE" -please see the section \s-1SYNOPSIS\s0, it says it all. -.SH "AUTHOR" -.IX Header "AUTHOR" -Thomas Linden . diff --git a/blib/man3/NOTEDB::text.3pm b/blib/man3/NOTEDB::text.3pm deleted file mode 100644 index b1168b1..0000000 --- a/blib/man3/NOTEDB::text.3pm +++ /dev/null @@ -1,221 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "NOTEDB::text 3pm" -.TH NOTEDB::text 3pm "2005-10-25" "perl v5.8.4" "User Contributed Perl Documentation" -.SH "NAME" -NOTEDB::text \- module lib for accessing a notedb from perl -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -.Vb 2 -\& # include the module -\& use NOTEDB; -.Ve -.PP -.Vb 2 -\& # create a new NOTEDB object -\& $db = new NOTEDB("text", "/home/tom/.notedb", 4096, 24); -.Ve -.PP -.Vb 5 -\& # decide to use encryption -\& # $key is the cipher to use for encryption -\& # $method must be either Crypt::IDEA or Crypt::DES -\& # you need Crypt::CBC, Crypt::IDEA and Crypt::DES to have installed. -\& $db\->use_crypt($key,$method); -.Ve -.PP -.Vb 3 -\& # do not use encryption -\& # this is the default -\& $db\->no_crypt; -.Ve -.PP -.Vb 2 -\& # get a single note -\& ($note, $date) = $db\->get_single(1); -.Ve -.PP -.Vb 4 -\& # search for a certain note -\& %matching_notes = $db\->get_search("somewhat"); -\& # format of returned hash: -\& #$matching_notes{$numberofnote}\->{'note' => 'something', 'date' => '23.12.2000 10:33:02'} -.Ve -.PP -.Vb 3 -\& # get all existing notes -\& %all_notes = $db\->get_all(); -\& # format of returnes hash like the one from get_search above -.Ve -.PP -.Vb 2 -\& # get the next noteid available -\& $next_num = $db\->get_nextnum(); -.Ve -.PP -.Vb 2 -\& # modify a certain note -\& $db\->set_edit(1, "any text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # create a new note -\& $db\->set_new(5, "any new text", "23.12.2000 10:33:02"); -.Ve -.PP -.Vb 2 -\& # delete a certain note -\& $db\->set_del(5); -.Ve -.PP -.Vb 2 -\& # turn on encryption. CryptMethod must be IDEA, DES or BLOWFISH -\& $db\->use_crypt("passphrase", "CryptMethod"); -.Ve -.PP -.Vb 2 -\& # turn off encryption. This is the default. -\& $db\->no_crypt(); -.Ve -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -You can use this module for accessing a note database. This backend uses -a text file for storage and Storable for accessing the file. -.PP -Currently, \s-1NOTEDB\s0 module is only used by note itself. But feel free to use it -within your own project! Perhaps someone want to implement a webinterface to -note... -.SH "USAGE" -.IX Header "USAGE" -please see the section \s-1SYNOPSIS\s0, it says it all. -.SH "AUTHOR" -.IX Header "AUTHOR" -Thomas Linden . diff --git a/blib/man3/note.3pm b/blib/man3/note.3pm deleted file mode 100644 index d28a460..0000000 --- a/blib/man3/note.3pm +++ /dev/null @@ -1,566 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "note 3pm" -.TH note 3pm "2005-10-25" "perl v5.8.4" "User Contributed Perl Documentation" -.SH "NAME" -note \- a perl script for maintaining notes. -.SH "SYNPOPSIS" -.IX Header "SYNPOPSIS" -note [options] [ number [,number...]] -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -\&\fBnote\fR is a small console program written in perl, which allows -you to manage notes similar to programs like \*(L"knotes\*(R" but from -the commandline. Note can use different database-backends for -notes\-storage. It ships with a DBI-based mysql\-module(which -can also be used for other by \s-1DBI\s0 supported \s-1DBMS\s0), another -module, which uses a binary file for storage and a \s-1DBM\s0 module. -There are also two modules available which uses a text file. -Note supports since version 1.0.0 encryption(\s-1IDEA\s0 or \s-1DES\s0)! -.SH "OPTIONS" -.IX Header "OPTIONS" -.IP "\fI\-c, \-\-config file\fR" 4 -.IX Item "-c, --config file" -Use another config file than the default ~/.noterc. -.IP "\fI\-l, \-\-list [topic]\fR" 4 -.IX Item "-l, --list [topic]" -Lists all existing notes. If no topic were specified, -it will display a list of all existing topics. -See the section \fI\s-1TOPICS\s0\fR for details about topics. -.IP "\fI\-L, \-\-longlist [topic]\fR" 4 -.IX Item "-L, --longlist [topic]" -The same as \fI\-l\fR but prints also the timestamp of the notes. -.IP "\fI\-t, \-\-topic\fR" 4 -.IX Item "-t, --topic" -Prints a list of all topics as a tree. -.IP "\fI\-T, \-\-longtopic\fR" 4 -.IX Item "-T, --longtopic" -Prints the topic-tree with the notes under each topic. -.IP "\fI\-s, \-\-search string\fR" 4 -.IX Item "-s, --search string" -Searches for trough the notes database. See the section -\&\fI\s-1SEARCHING\s0\fR for details about the search engine. -.IP "\fI\-e, \-\-edit number\fR" 4 -.IX Item "-e, --edit number" -Edit the note with the number using your default editor -or the one you specified in the config file. -.IP "\fI\-d, \-\-delete number\fR" 4 -.IX Item "-d, --delete number" -Delete the note with the number . You can delete multiple notes -with one command. \*(L"1\-4\*(R" deletes the notes 1,2,3,4. And \*(L"1,5,7\*(R" deletes -the specified ones. -.IP "\fI\-D, \-\-Dump [file | \-]\fR" 4 -.IX Item "-D, --Dump [file | -]" -Dumps all notes to the textfile . If is a \*(L"\-\*(R" it will -be printed out to standard output (\s-1STDOUT\s0). -.IP "\fI\-I, \-\-Import file | \-\fR" 4 -.IX Item "-I, --Import file | -" -Imports a previously dumped textfile into the -note database. Data will be appended by default. -You can also specify a dash \fInote \-I \-\fR instead of a , -which causes note, silently to read in a dump from \s-1STDIN\s0. -.IP "\fI\-o, \-\-overwrite\fR" 4 -.IX Item "-o, --overwrite" -Only suitable for use with \-\-Import. Overwrites an -existing notedb. Use with care. -.IP "\fI\-r, \-\-raw\fR" 4 -.IX Item "-r, --raw" -Raw mode, output will not be formatted. Works not in interactive -mode, only on cmd-line for list and display. That means, no colors -will be used and no lines or titles. -.IP "\fI\-i, \-\-interactive\fR" 4 -.IX Item "-i, --interactive" -Start note in interactive mode. See the section \fI\s-1INTERACTIVE\s0 \s-1MODE\s0\fR -for details on this mode. -.IP "\fI\-\-encrypt cleartext\fR" 4 -.IX Item "--encrypt cleartext" -Encrypt the given clear text string. You would need that if you want to -store the mysql password not in cleartext in the config(if you are using -the mysql backend!). -.IP "\fI\-h, \-\-help\fR" 4 -.IX Item "-h, --help" -Display this help screen. -.IP "\fI\-v, \-\-version\fR" 4 -.IX Item "-v, --version" -Display the version number. -.IP "\fB\-\fR" 4 -.IX Item "-" -If you run note just with one dash: \fBnote \-\fR, then it will read in a new -note from \s-1STDIN\s0 until \s-1EOF\s0. This makes it possible to pipe text into a new note, i.e.: -.Sp -.Vb 1 -\& cat sometextfile | note \- -.Ve -.SH "USAGE" -.IX Header "USAGE" -.Sh "\s-1GENERAL\s0 \s-1USAGE\s0" -.IX Subsection "GENERAL USAGE" -If you don't know, how to run note, try \*(L"note \-h\*(R" first. -It will tell you all available commandline options. -.PP -To create a new note, simply run \*(L"note\*(R". You can enter -the note (the length is by default limited to 4096 bytes, -which you can change from your config file if you are using -the binary backend, otherwise there is no limitation). -End by typing a . on a line itself. note will tell you the -number of the note. -.PP -If you want to view the note, type \*(L"note 1\*(R", if the notenumber -was 1. -.PP -If you want to get an overview of all notes, type \*(L"note \-l\*(R". -You will get a list of all notes, containing the number, -the first line and the creation date. If topic-support is -turned on (which is by default), then all subtopics under the -current topic will be displayed first. -If you want to see the timestamps, use \*(L"\-L\*(R" instead of \*(L"\-l\*(R". -Read more about topics below in the section \*(L"Topics\*(R". -You can also specify the topic which notes you want to see: -\&\*(L"\-l mytopic\*(R" does the trick. -Additional, you might want to get an overview of your topic\- -structure. You can use the command \*(L"\-t\*(R" in this case, which -will display a tree-view of your topic\-structure. You can -use the command \*(L"\-T\*(R" if you want to see the notes under each -topic too. \*(L"\-T\*(R" will also show the number of each note. -.PP -To edit a certain note, type \*(L"note \-e 1\*(R". It will invoke your -editor (vi or pico). You can edit it, after saving, note -will store the changed note to the database. -.PP -Of course you can drop a certain note: \*(L"note \-d 1\*(R" deletes -note number 1. If a note in the middle or the beginning of -the database will be deleted, note will recount the other -existent notes. For example there are 3 notes, number 1, 2 -and 3. If you delete number 2, then number 3 will become -number 2. -You can also make use of the extended delete\-syntax: -To delete note 1 and 2, use \*(L"\-d 1,2\*(R" -To delete note 1,2 and 3, use \*(L"\-d 1\-3\*(R". -.Sh "\s-1SEARCHING\s0" -.IX Subsection "SEARCHING" -If you cannot remember, which note you are looking for, you -can use the search capability of note: \*(L"note \-s \*(R". -note will search the whole note database case insensitive for -an occurence of this string and tell you the number and first\- -line it has. -.PP -You can extend the searchstring using \fB\s-1AND\s0\fR, \fB\s-1OR\s0\fR ( and ) and -shell-like wildcards: -.PP -.Vb 1 -\& $ note \-s "moses AND lenin" -.Ve -.PP -or: -.PP -.Vb 1 -\& $ note \-s "(mike OR arnold) AND (jackson OR schwarzenegger)" -.Ve -.PP -If note finds a note, which first line is a topic, then it will -display it's second line. -.PP -These rules apply for the interactive search too. -.PP -You need to know, that note searches for the expression in every -note. In other words, \*(L"moses \s-1AND\s0 lenin\*(R" searches for an occurence -of \*(L"moses\*(R" and \*(L"lenin\*(R" in \s-1ONE\s0 note. Or, if you are looking for -\&\*(L"mike \s-1OR\s0 daniel\*(R", then it searches for an occurence of \*(L"mike\*(R" or -daniel\*(L" in \s-1ONE\s0 note. Thus a note with the text \*(R"mike oldfield" will -match that search. -.Sh "\s-1TOPICS\s0" -.IX Subsection "TOPICS" -If topic-support is turned on (which is by default), the various -notes are sorted under various topics. There is no special database -field for the topic. Instead the topic will be stored right in the -note. -If the first line of your note contains some text bordered by slashes -(or whatever you prefer, set \*(L"TopicSeparator\*(R" in your config! default -is slash), then note will consider it as the topic of this certain -note. For examle: -.PP -.Vb 1 -\& B -.Ve -.PP -If you are using topics, no data after the topic is allowed, if there -is any text, note will consider it as a subtopic! Therefore, don't for\- -get to put a newline after the topic\-line. -.PP -The list-command will only show you notes under this topic. If you -create a new note, it will automagically inserted under the current -topic (note will prepend the string \*(L"/topicname/\*(R" to the text of your -note). -.PP -You can create at any time from any point a new topic. Just create a new -note and type the name of the new topic bordered by slashes (or -TopicSeparator) at the first line of this note. After saving, there -will be available a new topic with one note in it. -.PP -You can create as many subtopics as you like, the format is similar to -a filesystem\-path. An example, say, you want to create such a -structure: -.PP -.Vb 10 -\& (root \- top level) -\& | -\& |\-\-\-\-test -\& | |\-\-\-\-subtopic -\& | | |\-\-note 1 -\& | | |\-\-note 2 -\& | | -\& | |\-\-note 4 -\& | -\& |\-\-note 3 -.Ve -.PP -Then you may create those 4 new notes: -.PP -.Vb 12 -\& \-\-\- snip \-\-\- -\& /test/subtopic/ -\& note 1 -\& \-\-\- snip \-\-\- -\& /test/subtopic/ -\& note 2 -\& \-\-\- snip \-\-\- -\& note 3 -\& \-\-\- snip \-\-\- -\& /test/ -\& note 4 -\& \-\-\- snip \-\-\- -.Ve -.PP -I hope, you got the point ;\-) -.PP -If a note does not contain the \*(L"magic\*(R" /topic/ construction on the first -line, it will be listed under the \*(L"root\*(R" of note, that is the point -you are at the startup of note. -.PP -You can subsequently move a note without a topic to a certain topic. -Simply edit it and insert at the first line the above mentioned -construction. -.PP -Note: Please don't forget the prepending and appending a slash of a -topic. You will get strange results without it! -.Sh "\s-1INTERACTIVE\s0 \s-1MODE\s0" -.IX Subsection "INTERACTIVE MODE" -If you start note with the commandline flag \fB\-i\fR, then it starts -with an interactive interface. -It will start with a listing under the default top-topic (\*(L"/\*(R"). -You can enter the name of a topic to change to that topic. This works -similar to a filesystem structure. The current topic will be -displayed on the top of the screen. -.PP -The following commands are available: -.IP "\fBL [topic]\fR" 4 -.IX Item "L [topic]" -This command lists all notes with a timestamp. If you specify a topic, it -will only list the notes under this topic. If you are under a certain subtopic, -then it will only display the notes under this topic. -.IP "\fBl [topic]\fR" 4 -.IX Item "l [topic]" -This commands behaves similar to \fBL\fR but it does not display the timestamp. -You can achieve the same result by simply pressing enter at any time. -.IP "\fBN\fR" 4 -.IX Item "N" -You can create a new note by simply pressing \fBN\fR or \fBn\fR. You favorite -editor will be started and you can enter your note text. If you are already -under a topic then this new note will automatically go to this topic. -note adds an aditional line to the top of the note with the topic. But -you can of course specify your own topic. -.Sp -Note will tell you which number it has assigned to the newly created note. -.IP "\fBE number\fR" 4 -.IX Item "E number" -By entering \fBE\fR or \fBe\fR and a note-number you can edit an existing note -using your favorite editor. This way you can also move an existing note -from one topic to another one by editing the first line of the note. -.IP "\fBD number\fR" 4 -.IX Item "D number" -\&\fBE\fR or \fBe\fR deletes one or more existing note(s). It requires a note number -or a set of note numbers. 1\-5 and 1,7,9 are possible values. -After one or more notes has been deleted note will recount all remaining notes. -Say if you delete 1 and 2, then 3 will become 1, 4 will become 5 and so forth. -.IP "\fBS [expression]\fR" 4 -.IX Item "S [expression]" -You can search for the occurence of a text in your notes-database with the -command \fBS\fR or \fBs\fR. If you omit an expression note will ask you for one. -.Sp -If your search criteria matches on exactly one entry, note will display -that note entry instead of displaying its number. -.IP "\fBT\fR" 4 -.IX Item "T" -This prints a tree-view of your topic\-structure. \fBT\fR displays the tree with -notes, \fBt\fR displays just the topics without notes. -.IP "\fBcd topic\fR" 4 -.IX Item "cd topic" -Change the actual topic under which you are. This works identical like just -entering the topic but it has some advantages. You can enter \fBcd ..\fR if -you want to go one level up in the topic\-structure. And you can enter \fBcd /\fR -to go to the top of the structure. You can always leave out the 'cd' keyword too. -.Sp -Additional it is possible to enter a note-number instead of a topic name. -For this feature to be active you need to set the config option \fBShortCd\fR -to \fB1\fR or \fByes\fR. If you use a number and the note with this number is -under a certain topic then you will \*(L"cd\*(R" to this topic. This allows you -to do kind of jumps over multiple levels of topics. -.Sp -If is possible to abbreviate a topic. This works only if the abbreviation -matches on one single topic. If it matches more than one topic then the -available ones will be suggested. -.IP "\fB? or h\fR" 4 -.IX Item "? or h" -Display a short help screen. -.IP "\fBQ\fR" 4 -.IX Item "Q" -Quit note. -.Sh "\s-1BACKUP\s0" -.IX Subsection "BACKUP" -You can also dump the contents of your note-database into a -ASCII\-textfile(\fI\-D\fR). You can use this file later to import it into -your note\-database(\-I). This is usefull, if you want quickly trans\- -fer your notes from one host to another (i.e. you could mail -your note-dump form your office to home and import it there -for further use). -.PP -The dumps from the two versions of note are in the same format. -Using dumps it is also possible to reinitialize your database. You -can use the \*(L"\-o\*(R" switch whcih causes note to overwrite your existing -database. This is very handy if you changed heavily your config. And -it is required, if you changed: encryption, db\-driver, (binary\-format) -and the password. You can use the following command for reinitializing: -.PP -.Vb 1 -\& $ note \-D \- | note \-o \-I \- -.Ve -.PP -What the hell, does this do?! Step by step: -.IP "\(bu" 4 -\&\fBnote \-D \-\fR creates a note-database dump and prints it out -to stantdard output. -.IP "\(bu" 4 -\&\fB|\fR this is the shell's pipe command. It takes the output -of the left program and gives it to the right program as -standard input. -.IP "\(bu" 4 -\&\fBnote \-o \-I \-\fR imports a note-database dump from standard -input and overwrites an existing database. -.PP -Before you use the \fB\-o\fR switch, I consider you to make a backup! -.Sh "\s-1FORMATING\s0" -.IX Subsection "FORMATING" -Another very nice feature is the possibility to format the note-text -(as much as shell allows it). First, you can use the note-internal -\&\*(L"magic\-strings\*(R" for colorizing. Those strings looks much like \s-1HTML:\s0 -\&\*(L"here is a green line of text no more green.\*(R" -As you see, the beginning of another color starts with a tag(kinda) of -the color and ends with an end tag . -.PP -The following colors are available: -black, red, green, yellow, blue, magenta, cyan and white. -.PP -Beside colorizing text, you can also create bold or underlined text! If -you decide to use this (additional) feature, you need to set the -Config-Option \*(L"FormatText\*(R" to 1 which turns it on. -Usage is very straightforward, if a word (a word is defined as some -text with at least one space surrounded) is between a magic mark\- -character. Here are the available things, you can do: -.PP -.Vb 4 -\& bold: **word** -\& underlined: __word__ -\& inverse: {{word}} -\& hidden: //word// -.Ve -.PP -The text will be formatted using the actually note\-color. -.PP -The hidden formatting will use blue forground and blue background -to hide a string from the terminal, which is usefull for passwords. -.PP -If you set \*(L"FormatText\*(R" to \fIsimple\fR then the formatting can be -done this way instead: -.PP -.Vb 4 -\& bold: *word* -\& underlined: _word_ -\& inverse: {word} -\& hidden: /word/ -.Ve -.SH "ENCRYPTION" -.IX Header "ENCRYPTION" -You can turn on encryption from the config file. -Simply set UseEncryption to 1. Please note, that you need -to decide, if you want to use encryption before the first use -of note! If have already a note database and want to \*(L"migrate\*(R" -to encryption, I suggest you to follow the directions in the -file \s-1UPGRADE\s0! -.PP -You can choose from different encryption algorythms. The default -is \s-1IDEA\s0, but \s-1DES\s0 or \s-1BLOWFISH\s0 are also possible. You need to have -installed the following additional perl-modules on your system: -\&\s-1MD5\s0 -Crypt::IDEA -Crypt::DES -Crypt::CBC -.PP -After turning on encryption, note will ask you for a passphrase -everytime it runs! It will *not* store this passphrase! -So, don't forget it! Be careful! -.SH "CONFIGURATION" -.IX Header "CONFIGURATION" -You can use a configuration file with note but it is not required. -Note will use default values if there is no config. -.PP -The default config file is \fB~/.noterc\fR. You may specify another -one with the commandline flag \fI\-\-config\fR. -.PP -Comments start with #, empty lines will be ignored. -.PP -To turn on an option, set it to: \fB1\fR, \fBon\fR or \fByes\fR. -.PP -To turn off an option, set it to: \fB0\fR, \fBoff\fR or \fBno\fR. -.PP -An option consists of an atribute-value pair separated -by minimum one space (more spaces and/or tabs are allowed) -and an optional equal sign in between. -.PP -Variable names are case in\-sensitive. -.PP -For a detailed explanation of each possible parameter take a look -at the supplied sample configuration file in \fBconfig/noterc\fR. -.SH "AUTHOR" -.IX Header "AUTHOR" -Thomas Linden -.SH "VERSION" -.IX Header "VERSION" -1.3.1 (12/01/2005) diff --git a/blib/script/.exists b/blib/script/.exists deleted file mode 100644 index e69de29..0000000 diff --git a/blib/script/note b/blib/script/note deleted file mode 100755 index b842a6a..0000000 --- a/blib/script/note +++ /dev/null @@ -1,1671 +0,0 @@ -#!/usr/bin/perl - -eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' - if 0; # not running under some shell -# -# note - console notes management with database and encryption support. -# Copyright (C) 1999-2004 Thomas Linden (see README for details!) -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# - Thomas Linden -# -# latest version on: -# http://www.daemon.de/note/ -# - -BEGIN { - # works on unix or cygwin only! - my $path = $0; - $path =~ s#/[^/]*$##; - unshift @INC, "$path/.."; -} - -use strict; -no strict 'refs'; -use Getopt::Long; -use FileHandle; -use File::Spec; -#use Data::Dumper; - - -# -# prototypes -# -sub usage; # print usage message for us thumb userz :-) -sub find_editor; # returns an external editor for use -sub output; # used by &list and &display -sub C; # print colourized -sub num_bereich; # returns array from "1-4" (1,2,3,4) -sub getdate; # return pretty formatted day -sub new; # crate new note -sub edit; # edit a note -sub del; # delete a note -sub display; # display one or more notes -sub list; # note-listing -sub help; # interactive help screen -sub import; # import from notedb-dump -sub display_tree; # show nice tree-view -sub tree; # build the tree -sub print_tree; # print the tree, contributed by Jens Heunemann . THX! - - -# -# globals -# -my ( - # - # commandline options - # - $opt_, $opt_i, $opt_r, $opt_e, $opt_d, $opt_enc, - $opt_s, $opt_t, $opt_T, $opt_l, $opt_L, $opt_c, - $opt_D, $opt_I, $opt_o, $opt_h, $opt_n, $opt_v, - - # - # set from commandline (or interactive) - # - $number, $searchstring, $dump_file, $ImportType, $NewType, $Raw, $TOPIC, - - # - # configuration options - %conf, %driver, - - # - # processed colors - # - $BORDERC, $_BORDERC, $NOTEC, $NUMC, $_NUMC, $_NOTEC, $TIMEC, - $_TIMEC, $TOPICC, $_TOPICC, - - # - # config presets - # - $DEFAULTDBNAME, $USER, $PATH, $CONF, - - # - # internals - # - $TYPE, $mode, $NoteKey, %Color, @LastTopic, $timelen, $maxlen, - $version, $CurTopic, $CurDepth, $WantTopic, $db, - $sizeof, %TP, $TreeType, $ListType, $SetTitle, $clearstring, - @ArgTopics, $key, $typedef, @NumBlock, $has_nothing, @completion_topics, @completion_notes, - ); - - -# -# DEFAULTS, allows one to use note without a config -# don't change them, instead use the config file! -# - -$conf{dbdriver} = "binary"; -$conf{usecolors} = 1; -$conf{bordercolor} = "bold"; -$conf{numbercolor} = "blue"; -$conf{notecolor} = "green"; -$conf{timecolor} = "blue"; -$conf{topiccolor} = "bold"; -$conf{topicseparator} = '/'; -$conf{useencryption} = 0; -$conf{tempdirectory} = File::Spec->tmpdir(); -$conf{alwaysinteractive} = 1; -$conf{alwayseditor} = 1; -$conf{autoclear} = 1; - -$CONF = File::Spec->catfile($ENV{HOME}, ".noterc"); -$USER = getlogin || getpwuid($<); -chomp $USER; -$TOPIC = 1; -$version = "1.3.3"; -$CurDepth = 1; # the current depth inside the topic "directory" structure... -$maxlen = "auto"; -$timelen = 22; - - -# colors available -# \033[1m%30s\033[0m -%Color = ( 'black' => '0;30', - 'red' => '0;31', - 'green' => '0;32', - 'yellow' => '0;33', - 'blue' => '0;34', - 'magenta' => '0;35', - 'cyan' => '0;36', - 'white' => '0;37', - 'B' => '1;30', - 'BLACK' => '1;30', - 'RED' => '1;31', - 'GREEN' => '1;32', - 'YELLOW' => '1;33', - 'BLUE' => '1;34', - 'MAGENTA' => '1;35', - 'CYAN' => '1;36', - 'WHITE' => '1;37', - 'black_' => '4;30', - 'red_' => '4;31', - 'green_' => '4;32', - 'yellow_' => '4;33', - 'blue_' => '4;34', - 'magenta_' => '4;35', - 'cyan_' => '4;36', - 'white_' => '4;37', - 'blackI' => '7;30', - 'redI' => '7;31', - 'greenI' => '7;32', - 'yellowI' => '7;33', - 'blueI' => '7;34', - 'magentaI' => '7;35', - 'cyanI' => '7;36', - 'whiteI' => '7;37', - 'white_black' => '40;37;01', - 'bold' => ';01', - 'hide' => '44;34' - ); - -# -# process command line args -# -if ($ARGV[0] eq "") { - $mode = "new"; -} -elsif ($#ARGV == 0 && $ARGV[0] eq "-") { - $mode = "new"; - $NewType = 1; # read from STDIN until EOF - shift; - undef $has_nothing; -} -else { - Getopt::Long::Configure( qw(no_ignore_case)); - GetOptions ( - "interactive|i!" => \$opt_i, # no arg - "config|c=s" => \$opt_c, # string, required - "raw|r!" => \$opt_r, # no arg - "edit|e=i" => \$opt_e, # integer, required - "delete|d=s" => \$opt_d, # integer, required - "search|s=s" => \$opt_s, # string, required - "tree|topic|t!" => \$opt_t, # no arg - "longtopic|T!" => \$opt_T, # no arg - "list|l:s" => \$opt_l, # string, optional - "longlist|L:s" => \$opt_L, # string, optional - "dump||Dump|D:s" => \$opt_D, # string, optional - "import|Import|I:s" => \$opt_I, # string, optional - "overwrite|o!" => \$opt_o, # no arg - "help|h|?!" => \$opt_h, # no arg - "version|v!" => \$opt_v, # no arg - "encrypt=s" => \$opt_enc, # string, required - ); - $opt_n = shift; # after that @ARGV contains eventually - # a note-number - # $opt_ is a single dash, in case of existence! - # - # determine mode - # - if ($opt_i) { - $mode = "interactive"; - } - elsif (defined $opt_l || defined $opt_L) { - $mode = "list"; - if (defined $opt_l) { - @ArgTopics = split /$conf{topicseparator}/, $opt_l; - } - else { - $ListType = "LONG"; - @ArgTopics = split /$conf{topicseparator}/, $opt_L; - } - $CurDepth += $#ArgTopics + 1 if($opt_l || $opt_L); - $CurTopic = $ArgTopics[$#ArgTopics]; # use the last element everytime... - } - elsif ($opt_t || $opt_T) { - $mode = "tree"; - $TreeType = "LONG" if($opt_T); - } - elsif (defined $opt_s) { - $mode = "search"; - $searchstring = $opt_s; - } - elsif ($opt_e) { - $mode = "edit"; - $number = $opt_e; - } - elsif ($opt_d) { - $mode = "delete"; - $number = $opt_d; - } - elsif ($opt_enc) { - $mode = "encrypt_passwd"; - $clearstring = $opt_enc; - } - elsif (defined $opt_D) { - $mode = "dump"; - if (!$opt_) { - if ($opt_D ne "") { - $dump_file = $opt_D; - } - else { - $dump_file = "note.dump.$$"; - print "no dumpfile specified, using $dump_file.\n"; - } - } - else { - $dump_file = "-"; # use STDIN - } - } - elsif (defined $opt_I) { - $mode = "import"; - if (!$opt_) { - if ($opt_I ne "") { - $dump_file = $opt_I; - } - else { - print "Import-error! No dump_file specified!\n"; - exit(1); - } - } - else { - $dump_file = "-"; - } - } - elsif ($opt_v) { - print "This is note $version by Thomas Linden .\n"; - exit(0); - } - elsif ($opt_h) { - &usage; - } - else { - if ($opt_c && $mode eq "" && !$opt_n) { - $mode = "new"; - } - elsif ($opt_c && $mode eq "") { - $mode = ""; # huh?! - } - else { - $has_nothing = 1; - } - } - ### determine generic options - if ($opt_n =~ /^[\d+\-?\,*]+$/) { - # first arg is a digit! - if ($mode eq "") { - $number = $opt_n; - $mode = "display"; - undef $has_nothing; - } - else { - print "mode <$mode> does not take a numerical argument!\n"; - exit(1); - } - } - elsif ($opt_n ne "") { - print "Unknown option: $opt_n\n"; - &usage; - } - if ($opt_r) { - $Raw = 1; - } - if ($opt_o) { - $ImportType = "overwrite"; - if (!$opt_I) { - print "--overwrite is only suitable for use with --import!\n"; - exit(1); - } - } - ##### -} -if ($has_nothing && $mode eq "") { - &usage; -} - - -# read the configfile. -$CONF = $opt_c if($opt_c); # if given by commandline, use this. -if (-e $CONF) { - &getconfig($CONF); -} -elsif ($opt_c) { - # only wrong, if specified by commandline! else use default values! - print STDERR "Could not open \"$CONF\": file does not exist or permission denied!\n"; - exit(1); -} - -# directly jump to encrypt, 'cause this sub does -# not require a database connection -if ($mode eq "encrypt_passwd") { - &encrypt_passwd; - exit; -} - -# Always interactive? -if ($conf{alwaysinteractive} && $mode ne "dump" && $mode ne "import") { - $mode = "interactive"; -} - -# OK ... Long-Listing shall be default ... You wanted it!!! -if ($conf{defaultlong}) { - # takes only precedence in commandline mode - $ListType="LONG"; -} - - - - -# calculate some constants... -$BORDERC = "<$conf{bordercolor}>"; -$_BORDERC = ""; -$NUMC = "<$conf{numbercolor}>"; -$_NUMC = ""; -$NOTEC = "<$conf{notecolor}>"; -$_NOTEC = ""; -$TIMEC = "<$conf{timecolor}>"; -$_TIMEC = ""; -$TOPICC = "<$conf{topiccolor}>"; -$_TOPICC = ""; - -$NoteKey = $conf{topicseparator} . "notes" . $conf{topicseparator}; - - - - -# default permissions on new files (tmp) -umask 077; - - -# load the parent module -&load_driver(1); - -# check wether the user wants to use encryption: -if ($conf{useencryption} && $NOTEDB::crypt_supported == 1) { - if ($conf{cryptmethod} eq "") { - $conf{cryptmethod} = "Crypt::IDEA"; - } - if (!exists $ENV{'NOTE_PASSWD'}) { - print "password: "; - eval { - local($|) = 1; - local(*TTY); - open(TTY,"/dev/tty") or die "No /dev/tty!"; - system ("stty -echo ); - print STDERR "\r\n"; - system ("stty echo ; - } - } - else { - $key = $ENV{'NOTE_PASSWD'}; - } - chomp $key; - if ($conf{dbdriver} eq "mysql") { - eval { - require Crypt::CBC; - my $cipher = new Crypt::CBC($key, $conf{cryptmethod}); - # decrypt the dbpasswd, if it's encrypted! - $driver{mysql}->{dbpasswd} = - $cipher->decrypt(unpack("u", $driver{mysql}->{dbpasswd})) if($driver{mysql}->{encrypt_passwd}); - &load_driver(); - }; - die "Could not connect do db: $@!\n" if($@); - } - else { - &load_driver(); - } - $db->use_crypt($key,$conf{cryptmethod}); - undef $key; - # verify correctness of passwd - my ($cnote, $cdate) = $db->get_single(1); - if ($cdate ne "") { - if ($cdate !~ /^\d+\.\d+?/) { - print "access denied.\n"; # decrypted $date is not a number! - exit(1); - } - } #else empty database! -} -else { - &load_driver(); - $db->no_crypt; - - # does: NOTEDB::crypt_supported = 0; - my ($cnote, $cdate) = $db->get_single(1); - if ($cdate ne "") { - if ($cdate !~ /^\d+\.\d+?/) { - print "notedb seems to be encrypted!\n"; - exit(1); - } - } -} - - -# do we use the db cache? -if ($conf{cache}) { - $db->use_cache(); -} - - -# add the backend version to the note version: -$version .= ", " . $conf{dbdriver} . " " . $db->version(); - - -# main loop: ############### -&$mode; -exit(0); -################## EOP ################ - - - - - - - - - - - - - - -############ encrypt a given password ############## -sub encrypt_passwd { - my($key, $crypt_string); - print "password: "; - eval { - local($|) = 1; - local(*TTY); - open(TTY,"/dev/tty") or die "No /dev/tty!"; - system ("stty -echo ); - print STDERR "\r\n"; - system ("stty echo ; - } - chomp $key; - eval { - require Crypt::CBC; - my $cipher = new Crypt::CBC($key, $conf{cryptmethod}); - $crypt_string = pack("u", $cipher->encrypt($clearstring)); - }; - if ($@) { - print "Something went wrong: $@\n"; - exit 1; - } else { - print "Encrypted password:\n$crypt_string\n"; - } -} - - -############################### DISPLAY ################################## -sub display { - my($N,$match,$note,$date,$num); - # display a certain note - print "\n"; - &num_bereich; # get @NumBlock from $numer - my $count = scalar @NumBlock; - foreach $N (@NumBlock) { - ($note, $date) = $db->get_single($N); - if ($note) { - if ($Raw) { - print "$N\n$date\n$note\n\n"; - } - else { - output($N, $note, $date, "SINGLE", $count); - print "\n"; - } - $match = 1; - } - $count--; - } - if (!$match) { - print "no note with that number found!\n"; - } - } - -############################### SEARCH ################################## -sub search { - my($n,$match,$note,$date,$num,%res); - if ($searchstring eq "") { - print "No searchstring specified!\n"; - } - else { - print "searching the database $conf{dbname} for \"$searchstring\"...\n\n"; - - %res = $db->get_search($searchstring); - my $nummatches = scalar keys %res; - foreach $num (sort { $a <=> $b } keys %res) { - if ($nummatches == 1) { - output($num, $res{$num}->{'note'}, $res{$num}->{'date'}, "SINGLE"); - } - else { - output($num, $res{$num}->{'note'}, $res{$num}->{'date'}, "search"); - } - $match = 1; - } - if (!$match) { - print "no matching note found!\n"; - } - print "\n"; - } - } - - -############################### LIST ################################## -sub list { - my(@topic,@RealTopic, $i,$t,$n,$num,@CurItem,$top,$in,%res); - if ($mode ne "interactive" && !$Raw) { - print "\nList of all existing notes:\n\n"; - } - else { - print "\n"; - } - - # list all available notes (number and firstline) - %res = $db->get_all(); - - if ($TOPIC) { - undef %TP; - } - - foreach $num (sort { $a <=> $b } keys %res) { - $n = $res{$num}->{'note'}; - $t = $res{$num}->{'date'}; - if ($TOPIC) { - # this allows us to have multiple topics (subtopics!) - my ($firstline,$dummy) = split /\n/, $n, 2; - if ($firstline =~ /^($conf{topicseparator})/) { - @topic = split(/$conf{topicseparator}/,$firstline); - } - else { - @topic = (); - } - # looks like: "\topic\" - # collect a list of topics under the current topic - if ($topic[$CurDepth-1] eq $CurTopic && $topic[$CurDepth] ne "") { - if (exists $TP{$topic[$CurDepth]}) { - $TP{$topic[$CurDepth]}++; - } - else { - # only if the next item *is* a topic! - $TP{$topic[$CurDepth]} = 1 if(($CurDepth) <= $#topic); - } - } - elsif ($topic[$CurDepth-1] eq $CurTopic || ($topic[$CurDepth] eq "" && $CurDepth ==1)) { - # cut the topic off the note-text - if ($n =~ /^($conf{topicseparator})/) { - $CurItem[$i]->{'note'} = $dummy; - } - else { - $CurItem[$i]->{'note'} = $n; - } - # save for later output() call - $CurItem[$i]->{'num'} = $num; - $CurItem[$i]->{'time'} = $t; - $i++; - # use this note for building the $PATH! - if ($RealTopic[0] eq "") { - @RealTopic = @topic; - } - } - } - else { - output($num, $n, $t); - } - } - if ($TOPIC) { - if ($CurTopic ne "") { - if ($i) { - # only if there were notes under current topic - undef $PATH; - foreach (@RealTopic) { - $PATH .= $_ . $conf{topicseparator}; - last if($_ eq $CurTopic); - } - } - else { - # it is an empty topic, no notes here - $PATH = join $conf{topicseparator}, @LastTopic; - $PATH .= $conf{topicseparator} . $CurTopic . $conf{topicseparator}; - $PATH =~ s/^\Q$conf{topicseparator}$conf{topicseparator}\E/$conf{topicseparator}/; - } - } - else { - $PATH = $conf{topicseparator}; - } - - @completion_topics = (); - @completion_notes = (); - # we are at top level, print a list of topics... - foreach $top (sort(keys %TP)) { - push @completion_topics, $top; - output("-", " => ". $top . "$conf{topicseparator} ($TP{$top} notes)", - " Sub Topic "); - } - #print Dumper(@CurItem); - for ($in=0;$in<$i;$in++) { - push @completion_notes, $CurItem[$in]->{'num'}; - output( $CurItem[$in]->{'num'}, - $CurItem[$in]->{'note'}, - $CurItem[$in]->{'time'} ); - } - } - - print "\n"; - } - -############################### NEW ################################## -sub new { - my($TEMP,$editor, $date, $note, $WARN, $c, $line, $num, @topic); - if ($conf{readonly}) { - print "readonly\n"; - return; - } - $date = &getdate; - return if $db->lock(); - if ($conf{alwayseditor}) { - $TEMP = &gettemp; - # security! - unlink $TEMP; - # let the user edit it... - $editor = &find_editor; - if ($editor) { - # create the temp file - open NEW, "> $TEMP" or die "Could not write $TEMP: $!\n"; - close NEW; - system "chattr", "+s", $TEMP; # ignore errors, since only on ext2 supported! - system $editor, $TEMP; - } - else { - print "Could not find an editor to use!\n"; - $db->unlock(); - exit(0); - } - # read it in ($note) - $note = ""; - open E, "<$TEMP" or $WARN = 1; - if ($WARN) { - print "...edit process interupted! No note has been saved.\n"; - undef $WARN; - $db->unlock(); - return; - } - $c = 0; - while () { - $note = $note . $_; - } - chomp $note; - close E; - # privacy! - unlink $TEMP; - } - else { - $note = ""; - $line = ""; - # create a new note - if ($NewType) { - # be silent! read from STDIN until EOF. - while () { - $note .= $_; - } - } - else { - print "enter the text of the note, end with a single .\n"; - do - { - $line = ; - $note = $note . $line; - } until $line eq ".\n"; - # remove the . ! - chop $note; - chop $note; - } - } - # look if the note was empty, so don't store it! - if ($note =~ /^\s*$/) { - print "...your note was empty and will not be saved.\n"; - $db->unlock(); - return; - } - # since we have not a number, look for the next one available: - $number = $db->get_nextnum(); - if ($TOPIC && $CurTopic ne "") { - @topic = split(/$conf{topicseparator}/,$note); - if ($topic[1] eq "") { - $note = $PATH . "\n$note"; - } - } - $db->set_new($number,$note,$date); - # everything ok until here! - print "note stored. it has been assigned the number $number.\n\n"; - $db->unlock(); - } - - -############################### DELETE ################################## -sub del { - my($i,@count, $setnum, $pos, $ERR); - if ($conf{readonly}) { - print "readonly\n"; - return; - } - # delete a note - &num_bereich; # get @NumBlock from $number - - return if $db->lock(); - - foreach $_ (@NumBlock) { - $ERR = $db->set_del($_); - if ($ERR) { - print "no note with number $_ found!\n"; - } - else { - print "note number $_ has been deleted.\n"; - } - } - # recount the notenumbers: - $db->set_recountnums(); - - $db->unlock(); - @NumBlock = (); - } - -############################### EDIT ################################## -sub edit { - my($keeptime, $date, $editor, $TEMP, $note, $t, $num, $match, $backup); - if ($conf{readonly}) { - print "readonly\n"; - return; - } - # edit a note - $date = &getdate; - - return if $db->lock(); - - ($note, $keeptime) = $db->get_single($number); - if ($keeptime eq "") { - print "no note with that number found ($number)!\n\n"; - if($mode ne "interactive") { - $db->unlock(); - exit(0); - } - else { - $db->unlock(); - return; - } - } - - $TEMP = &gettemp; - open NOTE,">$TEMP" or die "Could not open $TEMP\n"; - select NOTE; - - system "chattr", "+s", $TEMP; # ignore errors, like in new() - - print $note; - close NOTE; - select STDOUT; - $editor = &find_editor; - - $backup = $note; - - if ($editor) { - system ($editor, $TEMP) and die "Could not execute $editor: $!\n"; - } - else { - print "Could not find an editor to use!\n"; - exit(0); - } - $note = ""; - open NOTE,"<$TEMP" or die "Could not open $TEMP\n"; - - while () { - $note = $note . $_; - } - chomp $note; - close NOTE; - - unlink $TEMP || die $!; - - if ($note ne $backup) { - if ($conf{keeptimestamp}) { - $t = $keeptime; - } - else { - $t = $date; - } - # we got it, now save to db - $db->set_edit($number, $note, $t); - - print "note number $number has been changed.\n"; - } - else { - print "note number $number has not changed, no save done.\n"; - } - $db->unlock(); - } - - -sub dump { - my(%res, $num, $DUMP); - # $dump_file - if ($dump_file eq "-") { - $DUMP = *STDOUT; - } - else { - open (DUMPFILE, ">$dump_file") or die "could not open $dump_file\n"; - $DUMP = *DUMPFILE; - } - select $DUMP; - %res = $db->get_all(); - foreach $num (sort { $a <=> $b } keys %res) { - print STDOUT "dumping note number $num to $dump_file\n" if($dump_file ne "-"); - print "Number: $num\n" - ."Timestamp: $res{$num}->{'date'}\n" - ."$res{$num}->{'note'}\n"; - } - print "\n"; - close(DUMPFILE); - select STDOUT; - } - -sub import { - my($num, $start, $complete, $dummi, $note, $date, $time, $number, $stdin, $DUMP, %data); - # open $dump_file and import it into the notedb - $stdin = 1 if($dump_file eq "-"); - if ($stdin) { - $DUMP = *STDIN; - } - else { - open (DUMPFILE, "<$dump_file") or die "could not open $dump_file\n"; - $DUMP = *DUMPFILE; - } - - $complete = $start = 0; - $number = 1; - while (<$DUMP>) { - chomp $_; - if ($_ =~ /^Number:\s\d+/) { - if ($start == 0) { - # we have no previous record - $start = 1; - } - else { - # we got a complete record, save it! - $data{$number} = { - date => $date, - note => $note - }; - print "fetched note number $number from $dump_file from $date.\n" if(!$stdin); - $complete = 0; - $note = ""; - $date = ""; - $number++; - } - } - elsif ($_ =~ /^Timestamp:\s\d+/ && $complete == 0) { - ($dummi,$date,$time) = split(/\s/,$_); - $date = "$date $time"; - $complete = 1; - } - else { - $note .= $_ . "\n"; - } - } - - if ($note ne "" && $date ne "") { - # the last record, if existent - $data{$number} = { - data => $date, - note => $note - }; - print "fetched note number $number from $dump_file from $date.\n" if(!$stdin); - } - - $db->set_del_all() if($ImportType ne ""); - $db->import_data(\%data); -} - -sub determine_width { - # determine terminal wide, if possible - if ($maxlen eq "auto") { - eval { - my $wide = `stty -a`; - if ($wide =~ /columns (\d+?);/) { - $maxlen = $1 - 32; # (32 = timestamp + borders) - } - elsif ($wide =~ /; (\d+?) columns;/) { - # bsd - $maxlen = $1 - 32; # (32 = timestamp + borders) - } - else { - # stty didn't work - $maxlen = 80 - 32; - } - }; - } -} - -sub clear { - # first, try to determine the terminal height - return if(!$conf{autoclear}); - my $hoch; - eval { - my $height = `stty -a`; - if ($height =~ /rows (\d+?);/) { - $hoch = $1; - } - elsif ($height =~ /; (\d+?) rows;/) { - # bsd - $hoch = $1; - } - }; - if (!$hoch) { - # stty didn't work - $hoch = 25; - } - print "\n" x $hoch; -} - -sub interactive { - my($B, $BB, $menu, $char, $Channel); - $Channel = $|; - local $| = 1; - # create menu: - $B = ""; - $BB = ""; - $menu = "[" . $B . "L" . $BB . "-List "; - if ($TOPIC) { - $menu .= $B . "T" . $BB . "-Topics "; - } - $menu .= $B . "N" . $BB . "-New " - . $B . "D" . $BB . "-Delete " - . $B . "S" . $BB . "-Search " - . $B . "E" . $BB . "-Edit " - . $B . "?" . $BB . "-Help " - . $B . "Q" . $BB . "-Quit] "; # $CurTopic will be empty if $TOPIC is off! - - # per default let's list all the stuff: - # Initially do a list command! - &determine_width; - $ListType = ($conf{defaultlong}) ? "LONG" : ""; - &list; - - my ($term, $prompt, $attribs); - eval { require Term::ReadLine; }; - if (!$@) { - $term = new Term::ReadLine(''); - $attribs = $term->Attribs; - $attribs->{completion_function} = \&complete; - } - - for (;;) { - $ListType = ($conf{defaultlong}) ? "LONG" : ""; - undef $SetTitle; - if ($CurDepth > 2) { - print C $menu . $TOPICC . "../" . $CurTopic . $_TOPICC . ">"; - } - else { - print C $menu . $TOPICC . $CurTopic . $_TOPICC . ">"; - } - - # endless until user press "Q" or "q"! - if ($term) { - if (defined ($char = $term->readline(" "))) { - $term->addhistory($char) if $char =~ /\S/; - $char =~ s/\s*$//; # remove trailing whitespace (could come from auto-completion) - } - else { - # shutdown - $| = $Channel; - print "\n\ngood bye!\n"; - exit(0); - } - } - else { - $char = ; - chomp $char; - } - - &determine_width; - &clear; - - if ($char =~ /^\d+\s*[\di*?,*?\-*?]*$/) { - $ListType = ""; #overrun - # display notes - $number = $char; - &display; - } - elsif ($char =~ /^n$/i) { - # create a new one - &new; - } - elsif ($char =~ /^$/) { - &list; - } - elsif ($char =~ /^l$/) { - $ListType = ""; - &list; - } - elsif ($char =~ /^L$/) { - $ListType = "LONG"; - &list; - undef $SetTitle; - } - elsif ($char =~ /^h$/i || $char =~ /^\?/) { - # zu dumm der Mensch ;-) - &help; - } - elsif ($char =~ /^d\s+([\d*?,*?\-*?]*)$/i) { - # delete one! - $number = $1; - &del; - } - elsif ($char =~ /^d$/i) { - # we have to ask her: - print "enter number(s) of note(s) you want to delete: "; - $char = ; - chomp $char; - $number = $char; - &del; - } - elsif ($char =~ /^e\s+(\d+\-*\,*\d*)/i) { - # edit one! - $number = $1; - &edit; - } - elsif ($char =~ /^e$/i) { - # we have to ask her: - print "enter number of the note you want to edit: "; - $char = ; - chomp $char; - $number = $char; - &edit; - } - elsif ($char =~ /^s\s+/i) { - # she want's to search - $searchstring = $'; - chomp $searchstring; - &search; - } - elsif ($char =~ /^s$/i) { - # we have to ask her: - print "enter the string you want to search for: "; - $char = ; - chomp $char; - $char =~ s/^\n//; - $searchstring = $char; - &search; - } - elsif ($char =~ /^q$/i) { - # schade!!! - $| = $Channel; - print "\n\ngood bye!\n"; - exit(0); - } - elsif ($char =~ /^t$/) { - $TreeType = ""; - &display_tree; - } - elsif ($char =~ /^T$/) { - $TreeType = "LONG"; - &display_tree; - $TreeType = ""; - } - elsif ($char =~ /^\.\.$/ || $char =~ /^cd\s*\.\.$/) { - $CurDepth-- if ($CurDepth > 1); - $CurTopic = $LastTopic[$CurDepth]; - pop @LastTopic; # remove last element - &list; - } - elsif ($char =~ /^l\s+(\w+)$/) { - # list - $WantTopic = $1; - if (exists $TP{$WantTopic}) { - my %SaveTP = %TP; - $LastTopic[$CurDepth] = $CurTopic; - $CurTopic = $1; - $CurDepth++; - &list; - $CurTopic = $LastTopic[$CurDepth]; - $CurDepth--; - %TP = %SaveTP; - } - else { - print "\nunknown command!\n"; - } - } - else { - # unknown - my $unchar = $char; - $unchar =~ s/^cd //; # you may use cd now! - if ($unchar =~ /^\d+?$/ && $conf{short_cd}) { - # just a number! - my @topic; - my ($cnote, $cdate) = $db->get_single($unchar); - my ($firstline,$dummy) = split /\n/, $cnote, 2; - if ($firstline =~ /^($conf{topicseparator})/) { - @topic = split(/$conf{topicseparator}/,$firstline); - } - else { - @topic = (); - } - if (@topic) { - # only jump, if, and only if there were at least one topic! - $CurDepth = $#topic + 1; - $CurTopic = pop @topic; - @LastTopic = (""); - push @LastTopic, @topic; - } - &list; - } - elsif ($unchar eq $conf{topicseparator}) { - # cd / - $CurDepth = 1; - $CurTopic = ""; - &list; - } - elsif (exists $TP{$char} || exists $TP{$unchar}) { - $char = $unchar if(exists $TP{$unchar}); - $LastTopic[$CurDepth] = $CurTopic; - $CurTopic = $char; - $CurDepth++; - &list; - } - else { - # try incomplete match - my @matches; - foreach my $topic (keys %TP) { - if ($topic =~ /^$char/) { - push @matches, $topic; - } - } - my $nm = scalar @matches; - if ($nm == 1) { - # match on one incomplete topic, use this - $LastTopic[$CurDepth] = $CurTopic; - $CurTopic = $matches[0]; - $CurDepth++; - &list; - } - elsif ($nm > 1) { - print "available topics: " . join( "," , @matches) . "\n"; - } - else { - print "\nunknown command!\n"; - } - } - undef $unchar; - } - } - } - - -sub usage - { - print qq~This is the program note $version by Thomas Linden (c) 1999-2003. -It comes with absolutely NO WARRANTY. It is distributed under the -terms of the GNU General Public License. Use it at your own risk :-) - -Usage: note [ options ] [ number [,number...]] -Read the note(1) manpage for more details. -~; - exit 1; - } - -sub find_editor { - return $conf{preferrededitor} || $ENV{"VISUAL"} || $ENV{"EDITOR"} || "vi"; -} - -#/ - -sub format { - # make text bold/underlined/inverse using current $NOTEC - my($note) = @_; - if ($conf{formattext}) { - # prepare colors to be used for replacement - my $BN = uc($NOTEC); - my $_BN = uc($_NOTEC); - my $UN = $NOTEC; - $UN =~ s/<(.*)>/<$1_>/; - my $_UN = $UN; - $_UN =~ s/<(.*)>/<\/$1>/; - my $IN = $NOTEC; - my $_IN = $_NOTEC; - $IN =~ s/<(.*)>/<$1I>/; - $_IN =~ s/<(.*)>/<$1I>/; - - if ($conf{formattext} eq "simple") { - $note =~ s/\*([^\*]*)\*/$BN$1$_BN/g; - $note =~ s/_([^_]*)_/$UN$1$_UN/g; - $note =~ s/{([^}]*)}/$IN$1$_IN/g; - $note =~ s#(?$1#g; - } - else { - $note =~ s/\*\*([^\*]{2,})\*\*/$BN$1$_BN/g; - $note =~ s/__([^_]{2,})__/$UN$1$_UN/g; - $note =~ s/{{([^}]{2,})}}/$IN$1$_IN/g; - $note =~ s#//([^/]{2,})//#$1#g; - } - - $note =~ s/(<\/.*>)/$1$NOTEC/g; - } - $note; -} - -sub output { - my($SSS, $LINE, $num, $note, $time, $TYPE, $L, $LONGSPC, $R, $PathLen, $SP, $title, $CUTSPACE, - $VersionLen, $len, $diff, $Space, $nlen, $txtlen, $count); - ($num, $note, $time, $TYPE, $count) = @_; - - $txtlen = ($ListType eq "LONG") ? $maxlen : $timelen + $maxlen; - $note = &format($note); - - $SSS = "-" x ($maxlen + 30); - $nlen = length("$num"); - $LINE = "$BORDERC $SSS $_BORDERC\n"; - $LONGSPC = " " x (25 - $nlen); - if ($conf{printlines}) { - $L = $BORDERC . "[" . $_BORDERC; - $R = $BORDERC . "]" . $_BORDERC; - } - $PathLen = length($PATH); # will be ZERO, if not in TOPIC mode! - $VersionLen = length($version) + 7; - - if ($TYPE ne "SINGLE") { - if (!$SetTitle) { - $SP = ""; - # print only if it is the first line! - $SP = " " x ($maxlen - 2 - $PathLen - $VersionLen); - if (!$Raw) { - # no title in raw-mode! - print C $LINE if ($conf{printlines}); - print C "$L $NUMC#$_NUMC "; - if ($ListType eq "LONG") { - print C " $TIMEC" . "creation date$_TIMEC "; - } - else { - print $LONGSPC if ($conf{printlines}); - } - if ($TOPIC) { - print C $TOPICC . "$PATH $_TOPICC$SP" . " note $version $R\n"; - } - else { - print C $NOTEC . "note$_NOTEC$SP" . " note $version $R\n"; - } - print C $LINE if ($conf{printlines}); - } - $SetTitle = 1; - } - $title = ""; - $CUTSPACE = " " x $txtlen; - if ($TYPE eq "search") { - $note =~ s/^\Q$conf{topicseparator}\E.+?\Q$conf{topicseparator}\E\n//; - } - $note =~ s/\n/$CUTSPACE/g; - $len = length($note); - if ($len < ($txtlen - 2 - $nlen)) { - $diff = $txtlen - $len; - if (!$Raw) { - if ($num eq "-") { - $Space = " " x $diff; - $title = $BORDERC . $TOPICC . $note . " " . $_TOPICC . $Space . "$_BORDERC"; - } - else { - $Space = " " x ($diff - ($nlen - 1)); - $title = $BORDERC . $NOTEC . $note . " " . $_NOTEC . $Space . "$_BORDERC"; - } - } - else { - $title = $note; - } - } - else { - $title = substr($note,0,($txtlen - 2 - $nlen)); - if (!$Raw) { - $title = $BORDERC . $NOTEC . $title . " $_NOTEC$_BORDERC"; - } - } - if ($Raw) { - print "$num "; - print "$time " if($ListType eq "LONG"); - if ($title =~ /^ => (.*)$conf{topicseparator} (.*)$/) { - $title = "$1$conf{topicseparator} $2"; # seems to be a topic! - } - print "$title\n"; - } - else { - # $title should now look as: "A sample note " - print C "$L $NUMC$num$_NUMC $R"; - if ($ListType eq "LONG") { - print C "$L$TIMEC" . $time . " $_TIMEC$R"; - } - print C "$L $NOTEC" . $title . "$_NOTEC $R\n"; - print C $LINE if ($conf{printlines}); - } - } - else { - # we will not reach this in raw-mode, therefore no decision here! - chomp $note; - $Space = " " x (($maxlen + $timelen) - $nlen - 16); - print C $LINE if ($conf{printlines}); - print C "$L $NUMC$num$_NUMC $R$L$TIMEC$time$_TIMEC $Space$R\n"; - print "\n"; - print C $NOTEC . $note . $_NOTEC . "\n"; - print C $LINE if ($count == 1 && $conf{printlines}); - } - } - - - -sub C { - my($default, $S, $Col, $NC, $T); - $default = "\033[0m"; - $S = $_[0]; - foreach $Col (%Color) { - if ($S =~ /<$Col>/g) { - if ($conf{usecolors}) { - $NC = "\033[" . $Color{$Col} . "m"; - $S =~ s/<$Col>/$NC/g; - $S =~ s/<\/$Col>/$default/g; - } - else { - $S =~ s/<$Col>//g; - $S =~ s/<\/$Col>//g; - } - } - } - return $S; - } - - - -sub num_bereich { - my($m,@LR,@Sorted_LR,$i); - # $number is the one we want to delete! - # But does it contain commas? - @NumBlock = (); #reset - $m = 0; - if ($number =~ /\,/) { - # accept -d 3,4,7 - @NumBlock = split(/\,/,$number); - } - elsif ($number =~ /^\d+\-\d+$/) { - # accept -d 3-9 - @LR = split(/\-/,$number); - @Sorted_LR = (); - - if ($LR[0] > $LR[1]) { - @Sorted_LR = ($LR[1], $LR[0]); - } - elsif ($LR[0] == $LR[1]) { - # 0 and 1 are the same - @Sorted_LR = ($LR[0], $LR[1]); - } - else { - @Sorted_LR = ($LR[0], $LR[1]); - } - - for ($i=$Sorted_LR[0]; $i<=$Sorted_LR[1]; $i++) { - # from 3-6 create @NumBlock (3,4,5,6) - $NumBlock[$m] = $i; - $m++; - } - } - else { - @NumBlock = ($number); - } - - } - -sub getdate { - my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); - $year += 1900; - $mon += 1; - $mon =~ s/^(\d)$/0$1/; - $hour =~ s/^(\d)$/0$1/; - $min =~ s/^(\d)$/0$1/; - $sec =~ s/^(\d)$/0$1/; - $mday =~ s/^(\d)$/0$1/; - if ($conf{timeformat}) { - my $back = $conf{timeformat}; - $back =~ s/YYYY/$year/; - $back =~ s/YY/substr($year, 1, 2)/e; - $back =~ s/MM/$mon/; - $back =~ s/DD/$mday/; - $back =~ s/mm/$min/; - $back =~ s/hh/$hour/; - $back =~ s/ss/$sec/; - return $back; - } - return "$mday.$mon.$year $hour:$min:$sec"; - } - - -sub gettemp { - my($random, @range); - @range=('0'..'9','a'..'z','A'..'Z'); - srand(time||$$); - for (0..10) { - $random .= $range[rand(int($#range)+1)]; - } - my $tempfile = File::Spec->catfile($conf{tempdirectory}, $USER . $random); - if (-e $tempfile) { - # avoid race conditions! - unlink $tempfile; - } - return $tempfile; - } - - - -sub help { - my $B = ""; - my $BB = ""; - my($S, $L, $T, $Q, $H, $N, $D, $E); - $L = $B . "L" . $BB . $NOTEC; - $T = $B . "T" . $BB . $NOTEC; - $Q = $B . "Q" . $BB . $NOTEC; - $H = $B . "?" . $BB . $NOTEC; - $N = $B . "N" . $BB . $NOTEC; - $D = $B . "D" . $BB . $NOTEC; - $E = $B . "E" . $BB . $NOTEC; - $S = $B . "S" . $BB . $NOTEC; - - print C qq~$BORDERC -----------------------------------------------------------------------$_BORDERC $TOPICC -HELP for interactive note $version -$_TOPICC $NOTEC -The following commands are available: -$L List notes. L=long, with timestamp and l=short without timestamp. - You can also just hit for short list. - If you specify a subtopic, then list will display it's contents, - i.e.: "l mytopic" will dislpay notes under mytopic. -$N Create a new note. -$D Delete a note. You can either hit "d 1" or "d 1-4" or just hit "d". - If you don't specify a number, you will be asked for. -$S Search trough the notes database. Usage is similar to Delete, use - a string instead of a number to search for. -$E Edit a note. Usage is similar to Delete but you can only edit note - a time. -$H This help screen. -$Q Exit the program.~; - if ($TOPIC) { - print C qq~ -$T print a list of all existing topics as a tree. T prints the tree - with all notes under each topic.~; - } - print C qq~ - -All commands except the List and Topic commands are case insensitive. -Read the note(1) manpage for more details.$BORDERC -----------------------------------------------------------------------$_BORDERC -~; - } - - -sub display_tree { - # displays a tree of all topics - my(%TREE, %res, $n, $t, $num, @nodes, $firstline, $text, $untext); - %res = $db->get_all(); - foreach $num (keys %res) { - $n = $res{$num}->{'note'}; - $t = $res{$num}->{'date'}; - # this allows us to have multiple topics (subtopics!) - my ($firstline,$text,$untext) = split /\n/, $n, 3; - if ($firstline =~ /^($conf{topicseparator})/) { - $firstline =~ s/($conf{topicseparator})*$//; #remove Topicseparator - @nodes = split(/$conf{topicseparator}/,$firstline); - } - else { - @nodes = (); #("$conf{topicseparator}"); - $text = $firstline; - } - &tree($num, $text, \%TREE, @nodes); - } - #return if ($num == 0); - # now that we have build our tree (in %TREE) go on t display it: - print C $BORDERC . "\n[" . $conf{topicseparator} . $BORDERC . "]\n"; - &print_tree(\%{$TREE{''}},"") if(%TREE); - print C $BORDERC . $_BORDERC . "\n"; -} - - -sub tree { - my($num, $text, $LocalTree, $node, @nodes) = @_; - if (@nodes) { - if (! exists $LocalTree->{$node}->{$NoteKey}) { - $LocalTree->{$node}->{$NoteKey} = []; - } - &tree($num, $text, $LocalTree->{$node}, @nodes); - } else { - if (length($text) > ($maxlen - 5)) { - $text = substr($text, 0, ($maxlen -5)); - } - $text = $text . " (" . $NUMC . "#" . $num . $_NUMC . $NOTEC . ")" . $_NOTEC if($text ne ""); - push @{$LocalTree->{$node}->{$NoteKey}}, $text; - } -} - - -sub print_tree { - # thanks to Jens for his hints and this sub! - my $hashref=shift; - my $prefix=shift; - my @notes=@{$hashref->{$NoteKey}}; - my @subnotes=sort grep { ! /^$NoteKey$/ } keys %$hashref; - if ($TreeType eq "LONG") { - for my $note (@notes) { - if ($note ne "") { - print C $BORDERC ; # . $prefix. "|\n"; - print C "$prefix+---<" . $NOTEC . $note . $BORDERC . ">" . $_NOTEC . "\n"; - } - } - } - for my $index (0..$#subnotes) { - print C $BORDERC . $prefix. "|\n"; - print C "$prefix+---[" . $TOPICC . $subnotes[$index] . $BORDERC . "]\n"; - &print_tree($hashref->{$subnotes[$index]},($index == $#subnotes?"$prefix ":"$prefix| ")); - } -} - - -sub getconfig { - my($configfile) = @_; - my ($home, $value, $option); - # checks are already done, so trust myself and just open it! - open CONFIG, "<$configfile" || die $!; - while () { - chomp; - next if(/^\s*$/ || /^\s*#/); - my ($option,$value) = split /\s\s*=?\s*/, $_, 2; - - $value =~ s/\s*$//; - $value =~ s/\s*#.*$//; - if ($value =~ /^(~\/)(.*)$/) { - $value = File::Spec->catfile($ENV{HOME}, $2); - } - - if ($value =~ /^(yes|on|1)$/i) { - $value = 1; - } - elsif ($value =~ /^(no|off|0)$/i) { - $value = 0; - } - - $option = lc($option); - - if ($option =~ /^(.+)::(.*)$/) { - # driver option - $driver{$1}->{$2} = $value; - } - else { - # other option - $conf{$option} = $value; - } - } - - close CONFIG; -} - - -sub complete { - my ($text, $line, $start) = @_; - - if ($line =~ /^\s*$/) { - # notes or topics allowed - return @completion_topics, @completion_notes; - } - if ($line =~ /^cd/) { - # only topics allowed - return @completion_topics, ".."; - } - if ($line =~ /^l/i) { - # only topics allowed - return @completion_topics; - } - if ($line =~ /^[ed]/) { - # only notes allowed - return @completion_notes; - } - if ($line =~ /^[snt\?q]/i) { - # nothing allowed - return (); - } -} - -sub load_driver { - my ($parent) = @_; - - if ($parent) { - my $pkg = "NOTEDB"; - eval "use $pkg;"; - if ($@) { - die "Could not load the NOTEDB module: $@\n"; - } - } - else { - # load the backend driver - my $pkg = "NOTEDB::$conf{dbdriver}"; - eval "use $pkg;"; - if ($@) { - die "$conf{dbdriver} backend unsupported: $@\n"; - } - else { - $db = $pkg->new(%{$driver{$conf{dbdriver}}}); - } - } -} - - -__END__