func llogf(p syslog.Priority, format string, a ...interface{}) { _, f, l, _ := runtime.Caller(2) fd := strings.Split(f, "/src/") if len(fd) == 2 { filedata := fmt.Sprintf("%s.%d: ", fd[1], l) format = filedata + format } syslog.Syslogf(p, format, a) }
func main() { // Don't throw an error when encountering an unknown flag (for sendmail compat) flag.CommandLine.Init(os.Args[0], flag.ContinueOnError) flag.Parse() if config.Message_FromCronDaemon { config.Message_FromName = "CronDaemon" } if err := config.ParseFile(config.ConfigFile); err != nil { fmt.Fprintf(os.Stderr, "Error while parsing configuration: %s\n", err) os.Exit(2) } // Map all local users to Postmaster address config.Message_To = flag.Args() for i, to := range config.Message_To { if -1 == strings.Index(to, "@") { config.Message_To[i] = config.Postmaster } } if config.Verbose { fmt.Printf("%#v\n", *config) } if len(config.Message_To) == 0 && !config.ScanMessage { fmt.Fprintln(os.Stderr, "Error: no recipients supplied") os.Exit(1) } m, err := compose() if err != nil { syslog.Errf("ComposeError: %s", err) fmt.Fprintf(os.Stderr, "ComposeError: %s\n", err) os.Exit(2) } c, err := connect() if err != nil { syslog.Errf("ConnectError: %s", err) fmt.Fprintf(os.Stderr, "ConnectError: %s\n", err) os.Exit(3) } if err := send(c, m); err != nil { syslog.Errf("SendError: %s", err) fmt.Fprintf(os.Stderr, "SendError: %s\n", err) os.Exit(4) } var subject string = "(unknown)" if len(m.Header["Subject"]) > 0 { subject = m.Header["Subject"][0] } syslog.Syslogf(syslog.LOG_INFO, "[%s] Sent mail; subject \"%s\"; from %s; to %#v", m.Header["Message-Id"][0], subject, config.Message_From, config.Message_To) if config.Verbose { fmt.Println("Info: send successful") } }