int main(int argc, char *argv[]) { g_type_init(); if (argc < 2) usage(argv[0], 1); if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) usage(argv[0], 0); if (argc <3) usage(argv[0], 1); if (!strcmp(argv[1], "--contact")) { open_book(argv[2]); } else if (!strcmp(argv[1], "--event")) { open_calendar(argv[2], E_CAL_SOURCE_TYPE_EVENT); } else if (!strcmp(argv[1], "--todo")) { open_calendar(argv[2], E_CAL_SOURCE_TYPE_TODO); } else if (!strcmp(argv[1], "--note")) { open_calendar(argv[2], E_CAL_SOURCE_TYPE_JOURNAL); } else { usage(argv[0], 1); } return 0; }
int main(int argc, char **argv) { int argn=1; static const char * const authvars[]={NULL}; signal(SIGPIPE, SIG_IGN); umask(022); if (argn >= argc) { struct PCP *pcp; pcp=open_calendar(NULL); mainloop(pcp); exit(0); } maildir_cache_init(TIMEOUT * 2, CACHEDIR, LOCALCACHEOWNER, authvars); if (strcmp(argv[argn], "start") == 0) { struct group *gr; if (chdir(CALENDARDIR) < 0) { perror(CALENDARDIR); exit(1); } gr=getgrnam(MAILGROUP); if (!gr) { fprintf(stderr, "Unknown group: %s\n", MAILGROUP); exit(1); } authtoken_init(); libmail_changeuidgid(getuid(), gr->gr_gid); start(); } else if (strcmp(argv[argn], "login") == 0 || strcmp(argv[argn], "slogin") == 0) { struct PCP *pcp; int flag; struct group *gr; gr=getgrnam(MAILGROUP); if (!gr) { fprintf(stderr, "Unknown group: %s\n", MAILGROUP); exit(1); } libmail_changeuidgid(getuid(), gr->gr_gid); if (chdir(CALENDARDIR) < 0) { perror(CALENDARDIR); exit(1); } authtoken_init(); userid=login(strcmp(argv[argn], "login"), &flag); pcp=pcp_open_dir(".", userid); if (pcp && flag && pcp_cleanup(pcp)) { pcp_close(pcp); syslog(LOG_CRIT, "pcpd: pcp_cleanup failed"); pcp=NULL; } if (!pcp) { syslog(LOG_CRIT, "pcpd: pcp_open_dir failed"); perror("pcp_open_dir"); exit(1); } mainloop(pcp); exit(0); } else if (strcmp(argv[argn], "stop") == 0) { if (chdir(CALENDARDIR) < 0) { perror(CALENDARDIR); exit(1); } ll_daemon_stop(LOCKFILE, PIDFILE); exit(0); } else if (strcmp(argv[argn], "open") == 0) { ++argn; if (argn < argc) { struct PCP *pcp; pcp=open_calendar(argv[argn]); mainloop(pcp); exit(0); } } fprintf(stderr, "Usage: %s (start|stop|open [path])\n", argv[0]); exit(1); return (0); }