/* Generate reasonable per-user default settings for kcmemail... * * (c) 2001 Red Hat, Inc. * * Programmed by Bernhard Rosenkraenzer <bero@redhat.com> * * Released under the terms of the GNU GPL v2 or later. * */ #include <pwd.h> #include <sys/types.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> typedef struct { char *name; char *path; char *param; bool text; } mailer; static mailer mailers[]={ { "kmail", "/usr/bin/kmail", NULL, false }, { "/usr/bin/balsa", "/usr/bin/balsa", NULL, false }, { "/usr/bin/mozilla", "/usr/bin/mozilla", "-mail", false }, { "/usr/bin/exmh", "/usr/bin/exmh", NULL, false }, { "/usr/bin/netscape", "/usr/bin/netscape", "-mail", false }, { "/usr/bin/pine", "/usr/bin/pine", NULL, true }, { "/usr/bin/mutt", "/usr/bin/mutt", NULL, true }, { "/bin/mail", "/bin/mail", NULL, true }, { NULL, NULL, false } }; int main(int argc, char **argv) { FILE *f=stdout; char *client; int mailer; struct passwd *p; char *emailAddress=0, *fullName=0, *mailSpool=0; p=getpwuid(getuid()); for(mailer=0; mailers[mailer].path!=NULL; mailer++) { if(!access(mailers[mailer].path, X_OK)) break; } if(mailers[mailer].param) { client=(char*)malloc(strlen(mailers[mailer].param)+strlen(mailers[mailer].name)+2); sprintf(client, "%s %s", mailers[mailer].name, mailers[mailer].param); } else client=strdup(mailers[mailer].name); if(p) { /* Look at the passwd file and take a good guess at the * * email address... * * username@domainname.tld is usually a good choice. */ char hostname[1024]; gethostname(hostname, 1024); if(strchr(hostname, '.') && strchr(hostname, '.') != strrchr(hostname, '.')) strcpy(hostname, strchr(hostname, '.')+1); emailAddress=(char*)malloc(strlen(p->pw_name)+strlen(hostname)+2); sprintf(emailAddress, "%s@%s", p->pw_name, hostname); fullName=p->pw_gecos; if(!fullName) fullName=p->pw_name; mailSpool=(char*)malloc(strlen(p->pw_name)+11); sprintf(mailSpool, "/var/mail/%s", p->pw_name); } fprintf(f, "[Defaults]\n" "Profile=Default\n" "[PROFILE_Default]\n" "EmailAddress=%s\n" "EmailClient=%s\n" "FullName=%s\n" "IncomingServer=%s\n" "IncomingServerType=localbox\n" "OutgoingCommand=/usr/sbin/sendmail\n" "OutgoingServerType=local\n" "TerminalClient=%s\n", emailAddress ? emailAddress : "", client ? client : "", fullName ? fullName : "", mailSpool ? mailSpool : "" , mailers[mailer].text ? "true" : "false"); fclose(f); free(client); if(emailAddress) free(emailAddress); if(mailSpool) free(mailSpool); }