BANAL version 0.03

Chapter 6: Appendices

6.1: Appendix A: RDB expressions

Valid comparison operators are: gt, ge, lt, le, eq, ne, mat, nmat. The last two are for pattern matching. Logical operators: or and and may be used as well as null to indicate an empty value. The value any will match any field name. For numeric entries, you may also use the comparison operators: >, >=, <, <=, ==, != (although, I'm not certain that they are recommended and they usually require extra delimiting). See the notes on delimiting special characters in the section 6.2.

Following are some examples of RDB-type expressions of the type that might be used with BANAL's list commands, and their meaning. For more details read the perlre (1) man page.

6.2: Appendix B: Delimiting Special Characters

As of BANAL 0.03 you no longer have to double delimit your shell's special characters. Specifically, '(', ')', ';', '?', '*', '|', '&', '<', and '>' (or '();?*|&<>' for short).

If we have missed a special character then please let us know (you may still use the double delimiting method described below until a fix is made). You should realize, however, that you will still have to delimit the special characters on your command line (single delimit).

In the case that we have missed a special character use the following method to work around the problem.

Double Delimiting Method

When you find a special character (very hypothetical eg. '[') that you must delimit then you must delimit it once for your shell and you must delimit it again for perl (the perl set is the same as the Bourne shell). For example, if you want to match all invoices with a '[' in the Description field you must do:

bk invoices Description mat /\\\[/
or
bk invoices "Description mat /\[/"

6.3: Appendix C: Trouble Shooting and FAQ

  1. When I try to use the PostScript invoice I get an error about "undefined in /AddressA". What can I do?

    You are using some books from a pre-0.03 release of BANAL. The quickest way to fix this is to edit the file, Company.rdb, in your books directory. Change the string 'Address1' to 'AddressA' and 'Address2' to 'AddressB'. These strings should be in the first line that doesn't begin with the character '#'. The name changes were made to assist in making a LaTeX driver for documents.

  2. I get "Insecure dependency in `` while running with -T switch" and then bkd exits.

    Remove the letter 'T' from the first line of bkd. This will also disable some security checks. Please report this problem to:
    Matthew.Rice@ftlsol.com

  3. I get "Can't exec '/bin/sh'" or bk keeps using 'bin/sh' as my editor.

    You must set your EDITOR environment variable. For example, to set your editor to /usr/local/bin/gnuclient, you would type:

    export EDITOR=/usr/local/bin/gnuclient

  4. What's up with the client and company databases? Why is there no contact name in the company entries and why is there no address in the client entry?

    To my line of thinking, a client is a person (you could be billing more than one person at the same company). I assume that anyone that you are billing is work. Thus that person should be contacted at their workplace. By keeping the company information seperate from the client it makes it easier to update the company information for all clients affiliated with said company. It also let's a client change companies without you losing the previous companies information after the client edit. Feel free to argue with me on this one.

  5. The server starts but when I try: bk <command>, I get "no command named user-<command>". What did I do wrong?

    You have to specify the directory for your books to the server. The server uses any rdb file that starts with a capital letter to generate edit and list functions for that database. You can specify the books' directory on the server's command line with the -b option or run the server in the books' directory.