コード例 #1
0
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;
}
コード例 #2
0
ファイル: pcpd.c プロジェクト: zixia/nospam
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);
}