Firma development policy ------------------------ Abstract: this policy helps control all development steps to keep a clean and junk-free code. In the future this procedure will be automatic. 1 - After any addition to firma, check the following: ---------------------------------------------------- - Put all new variables in the variables list bellow - If a new variable has to be declared via a config-file, remember to set it to be created in the NewList function - Put all new functions in the functions list bellow - Put all new global variables in the GLOBAL_VARS variable - Put all new global arrays in the GLOBAL_ARRAYS variable - If you are using an unix command, check if its already listed in the commands list. If it's not, please add it 2 - Variables usage ------------------- - Global vars: uppercase, with spaces replaced by underscores - Local vars: lowercase, with spaces replaced by underscores and declared using "local" - Attention to variables initialization, unset all vars after use 3 - Script listing ------------------ - used functions: DeclareGpgVars Usage Version CheckFirmaConfigFile CheckListConfigFile GetMessage GetMessageHeaders GetGpgMessage GetGpgDecryptStderr GetSubscribersList SendListMessage SendWarningMessage SendBounceMessage ProcessMessage NewList ListAdministration ChooseUid - used variables: - declared via a config file GPG_BINARY MAIL_AGENT MAIL_AGENT_ARGS LISTS_DIR USE_GPG_HIDDEN_RECIPIENT_OPTION SEND_MESSAGES_USING_BCC LIST_ADDRESS LIST_ADMIN LIST_HOMEDIR PASSPHRASE - declared directly via firma FIRMA_CONFIG_FILE VERSION GPG_FLAGS GPG GPG_LIST_KEYS GPG_DECRYPT GPG_ENCRYPT FROM DATE SUBJECT SENDER_ADDRESS GPG_DECRYPT_STDERR SUBSCRIBERS_LIST MESSAGE_BODY DESCRIPTION GLOBAL_ARRAYS ARRAY GLOBAL_VARS VAR LIST_NAME LIST_PATH LIST_CONFIG_FILE STDIN - local vars administrator stdin element first_blank_line i j subscriber email_address keyid uid_count chosen_uid_number - arrays ORIG_MESSAGE ORIG_MESSAGE_HEADERS ORIG_GPG_MESSAGE - unix commands: bash itself $GPG_BINARY $MAIL_AGENT echo cat grep wc tr seq cut sed mkdir touch chmod chown basename expect fold uniq mimencode